package com.nacre.test7;
public class TestDaemon {
public static void main(String[] args) throws InterruptedException {
MyDaemon dt=new MyDaemon();
if(dt.isDaemon()){
System.out.println(dt+"is demon thread");
Thread.sleep(1000);
System.out.println(" main thread is ending.");
}
}
}
package com.nacre.test7;
public class MyDaemon implements Runnable{
Thread thrd;
MyDaemon() {
thrd=new Thread(this);
thrd.setDaemon(true);
thrd.start();
}
public boolean isDaemon(){
return thrd.isDaemon();
}
public void run() {
try { while(true) {
System.out.print(".");
//Thread.sleep(100);
}
} catch(Exception exc) {
System.out.println("MyDaemon interrupted.");
}
}
}
В вышеприведенном классе 2 я дал точку останова для каждой строки в программе. Я начал отладку в редакторе eclipse и увидел, что поток управления ... ...... возвращаться к этому ниже кода после выполнения thrd.start() метод MyDaemon класса, который вызывает метод run()
if(dt.isDaemon()){
System.out.println(dt+"is demon thread");
Thread.sleep(1000);
System.out.println(" main thread is ending.");
}
и ни в коем случае контрольной собирается это ниже части
public void run() {
try { while(true) {
System.out.print(".");
Thread.sleep(100);
}
} catch(Exception exc) {
System.out.println("MyDaemon interrupted.");
}
То, что я знал, что при вызове метода start() c oncurrently jvm вызывает метод run, создавая новый поток, я сомневаюсь, почему я не могу увидеть выполнение метода run при отладке и как я получаю следующий вывод
com.nacre.test7.MyDaemon @ 152b6651is демон поток .......... главный нить завершается.
фотографии, которые вы указали, показывают общедоступный метод void run(), но теперь он показывает, что элемент управления находится внутри метода run(), как и другой оператор в классе .......... thats what Я спрашиваю. – rajeev
Вы не сможете это увидеть. Причина Основной поток умирает, как только выполняется последнее утверждение. Итак, теперь вы потеряли отладчик. Если вы хотите увидеть элемент управления в методе run, увеличьте время ожидания до 1,00,000 миллисекунд, а затем установите точку отладки в методе запуска. Он работает – dharam
Кроме того, в тот момент, когда основная нить просыпается, он умрет, а затем вы снова потеряете отладчик. Отладчик недоступен для выполнения потока hte daemon – dharam