日期:2014-05-20  浏览次数:20692 次

ThreadPoolExecutor线程池
ThreadPoolExecutor.execute(Runnable) 之后 这个 Runnable 会自己释放吗?

我所实现的 Runnable 的run方法内未写while循环. 
当时的设计目的是设想会生成好多好多任务 每个任务都丢入ThreadPoolExecutor执行一次run然后自动释放.

现在盯内存的感觉好像不是这样. 是不是要对ThreadPoolExecutor做什么属性设置啊?

------解决方案--------------------
Runnable 接口的实现类。线程池执行完run方法后,线程会被线程池回收。

线程什么时候被停止,线程对象什么时候被垃圾回收,不由程序员控制。
不过,有一些选项可以配置。

Runnable 实现类的对象,是否被释放,这个要看楼主的程序中,这个对象是否被引用,
在JVM中,被引用的对象,一般不会被释放。当然,执行它的线程,在执行完run方法后,
不再引用该对象了,如果之后,该对象仍不被其他对象引用,会被垃圾回收。
------解决方案--------------------
无论是new Thread()还是threadpool中的线程,如果不再引用或执行完毕,JVM都将回收。