0

我正在编写我的系统编程课程作业(使用线程)。

我的活动类实现了可运行的,我有另一个带有执行器的类,它使用以下命令执行可运行的:ThreadPoolExecutor e = (ThreadPoolExecutor) Executors.newFixedThreadPool(number);

我在那个线程池中有几个线程同时运行。我的问题如下:我可以选择知道一个线程什么时候完成了它需要做什么的工作,我怎样才能关闭这个线程,并且 - 只 - 这个线程,而不是整个执行程序?

4

2 回答 2

1

ThreadPoolExecutor负责管理其线程,您无法访问它们,除非通过一些可能会破坏执行程序的丑陋黑客。您应该使用 API 提供的配置选项,例如setKeepAliveTime接受keepAliveTime. 将此设置为零,您将自动获得所需的行为。

于 2012-12-18T09:39:48.980 回答
0

如果我理解正确,你想要的是newCachedThreadPool而不是newFixedThreadPool

来自 Java 文档

创建一个线程池,根据需要创建新线程,但在可用时将重用以前构造的线程。这些池通常会提高执行许多短期异步任务的程序的性能。如果可用,对执行的调用将重用以前构造的线程。如果没有可用的现有线程,将创建一个新线程并将其添加到池中。六十秒内未使用的线程将被终止并从缓存中删除。因此,保持空闲足够长时间的池不会消耗任何资源。请注意,可以使用 ThreadPoolExecutor 构造函数创建具有相似属性但细节不同(例如超时参数)的池。

于 2012-12-18T09:46:24.273 回答