2012-10-02 34 views
2

我见过很多Thread java实例,Runnable对象被创建为任务并传递给线程。 因为没有这些任务的引用,所以为什么这个任务不是由java收集垃圾? 还是垃圾收集,我在这里问错了问题? 请分享您的宝贵想法。Runnable不是垃圾收集在java中

+4

你怎么知道他们不会被垃圾收集? – nneonneo

+0

@nneonneo我喜欢这个问题+1,我想问同样的问题:)。好吧,再来一个:“你怎么知道他们没有被垃圾收集?”? – Elbek

+0

@elbek我没有测试这个部分,但我在逻辑上得出结论,如果它被垃圾收集,那么没有什么会工作,而且什么东西必须比什么更符合眼睛。 – AKS

回答

3

事实上,你没有明确的引用对象并不意味着内部的JVM对象不会持有它。

采取的示例:

frame.add(new JButton("foobar")); 

有从一个显影剂指向它没有提到,但在内部,所述框架具有组件的列表。这是线程发生的情况,内部调度程序必须保持对它们的引用。

的线程调度刚发布时本身会被垃圾收集(所以没有引用有效存在于它了)