我认为对象只存在于已定义的范围内.但是在这个程序中,执行thtest
方法后,t1
线程的对象仍然存在,我可以在输出中看到"hi"和"bye".
public class apples { public static void main(String args[]){ int b =1; navid n = new navid(); n.thtest(); while (b==1){ System.out.println("bye"); } } }
public class navid { int a=1; public void thtest (){ Runnable te = new Runnable() { public void run(){ try{ while (a==1){ System.out.println("hi");} }catch(Exception e){} } }; Thread t1 = new Thread (te); t1.start(); } }
nos.. 6
我认为对象只存在于已定义的范围内.
这是一个错误的假设.对象存在,直到不再有对它们的引用(或者直到它被垃圾收集,具体取决于您的视图).您可以将对对象的引用存储在除定义之外的其他位置,并根据需要使它们生效.
线程有点特殊,JVM将跟踪一个线程,它将继续运行,直到它的run()
方法结束,即使你的代码不包含对Thread对象的引用.
我认为对象只存在于已定义的范围内.
这是一个错误的假设.对象存在,直到不再有对它们的引用(或者直到它被垃圾收集,具体取决于您的视图).您可以将对对象的引用存储在除定义之外的其他位置,并根据需要使它们生效.
线程有点特殊,JVM将跟踪一个线程,它将继续运行,直到它的run()
方法结束,即使你的代码不包含对Thread对象的引用.