Java中匿名对象作为线程运行的生存期

Java中匿名对象作为线程运行的生存期,java,android,multithreading,Java,Android,Multithreading,在一种方法中,我有以下几点: Runnable r = new Runnable() { public void run() { ... ... } }; new Thread(r).st

在一种方法中,我有以下几点:

Runnable r = new Runnable() {
                    public void run() {
                       ...
                       ...
                     }                       
                };              
                new Thread(r).start();
这个匿名对象和线程的生存期是多少

这个匿名对象和线程的生存期是多少

1) 线程一直运行,直到您停止它


2) 对象作用域(
r
)在方法中。如果对象在离开方法时被销毁,线程在此之后怎么还能运行,即线程运行的代码(即匿名对象)现在不见了?THX方法堆栈线程在方法执行完成后返回。在终止之前,它会创建另一个线程。所以它自己运行。运行创建的线程不需要该方法堆栈线程处于活动状态。有道理吗?是的。非常感谢。请澄清:没有任何对象会因为“您离开了方法”而被销毁。当不再有任何引用链可以从某个线程堆栈跟踪到所讨论的对象时,对象可能会被销毁。在您的情况下,只要堆栈存在(即,只要run()方法没有退出),就至少有一个引用来自它自己的堆栈,一个引用来自Thread对象,一个引用来自Thread对象来自Runnable对象,线程和Runnable在垃圾收集器中是安全的。@jameslarge这是一条清晰而有价值的注释:)