Суть вопроса. Есть класс потока
class MyThread implements Runnable {
private boolean isActive;
void disable(){
isActive=false;
}
MyThread(){
isActive = true;
}
public void run(){
System.out.printf("%s started... \n", Thread.currentThread().getName());
int counter=1; // счетчик циклов
while(isActive){
System.out.println("Loop " + counter++);
try{
Thread.sleep(400);
}
catch(InterruptedException e){
System.out.println("Thread has been interrupted");
}
}
System.out.printf("%s finished... \n", Thread.currentThread().getName());
}
}
И главный метод
public static void main(String[] args) {
System.out.println("Main thread started...");
MyThread myThread = new MyThread();
new Thread(myThread,"MyThread").start();
try{
Thread.sleep(1100);
myThread.disable();
Thread.sleep(1000);
}
catch(InterruptedException e){
System.out.println("Thread has been interrupted");
}
System.out.println("Main thread finished...");
}
В методе main мы усыпляем главный поток на 1,1 сек. и получается до вызова метода disable у нас отрабатывает метод run, который успевает прокрутить 3 итерации цикла и потом цикл завершается и поток завершается, все верно?
Не пойму зачем еще один Thread.sleep(1000) после disable?