Не совсем понятно, как работает метод getTime().. Помогите, пожалуйста, разобраться. Эта задачка не из курса ждавараш, решил параллельно делать свою мини-программку.
В одном создаваемых потоков хочу вычислить разницу во времени от начала создания новой нити (создаю переменную final static long flag_t) до момента, когда переменная Term.x станет менее 5 (для этого вызываю dateNow.getTime() ), но всегда разность во времени получается равной нулю. При тестировании (если убрать условие if (Term.x < 5) и запускать кусок этой программы) получаю всегда равенство значений flag_t и dateNow.getTime().
1. Подскажите, пожалуйста, как я могу вычислить разницу во времени от начала выполнения этой нити до выполнения условия Term.x < 5 (это время примерно равняется 3 секундам)?
2. В строке 16 поток прекращает свое существование, при этом он будет отнимать у процессора часть "рабочей мощности" в виде оперативной памяти и т.п? Как я понимаю, поток в этом месте просто "зациклится" в одной точке и будет "виснуть", а удалится полностью только после автоматического запуска сборщика мусора, я верно понимаю?
Заранее спасибо за ответы!
public class MT_1 implements Runnable {
Date dateNow = new Date();
static Date T = new Date();
final static long flag_t = T.getTime(); // флаг начала отсчета времени
public void run() {
while (true){
if (Term.x < 5) {
System.out.println(dateNow.getTime());
System.out.println(flag_t);
System.out.println("разница времени: " + ( dateNow.getTime() - flag_t) );
Thread.currentThread().interrupt();
System.out.println("самоуничтожение потока...");
while (Thread.currentThread().isInterrupted()); //здесь поток "самоуничтожается"
}
}
}
}