如果我有Runnable
这样的话:
public class HelloRunnable implements Runnable {
int helloCount = 0;
public void run() {
System.out.println("Hello from a thread!");
helloCount++;
}
}
还有另外一个类:
public class Test {
public static void main(String args[]) {
HelloRunnable hello = new HelloRunnable();
(new Thread(hello)).start();
// do some other stuff
System.out.println("Numer of times I said Hello: " + hello.helloCount);
}
}
据我了解,该线程在打印Hello后会停止执行并递增计数器(让我们假设它立即执行)。当我执行其他操作时,HelloRunnable的实例应该仍然存在,因为我有一个有效的指针。
但什么时候Thread对象(我通过Runnable的那个)被释放了?我可以创建这样的大量线程,维护我的Runnable对象(每个线程都有自己的Runnable),或者在Runnable对象存在时线程永远不会释放,我会用完线程或类似的东西?
答案 0 :(得分:4)
Runnable对调用它的线程没有任何影响,因此它不会阻止线程被垃圾回收。 Runnable没有什么神奇之处,它或多或少只是一个如何为线程提供运行代码的约定。