好吧,标题的措辞有点奇怪,但我真的不知道如何表达它。基本上,根据我对 Java 和线程的理解,你创建一个线程,它运行,它死亡。但是,线程 OBJECT 仍然存在。我想知道这样的事情是否有效
int numWorkers = Integer.parseInt(args[0]);
int threadPoolSize = Integer.parseInt(args[1]);
ExecutorService tpes = Executors.newFixedThreadPool(threadPoolSize);
WorkerThread[] workers = new WorkerThread[numWorkers];
while(some condition)
for (int i = 0; i < numWorkers; i++) {
workers[i] = new WorkerThread(i, *some changing parameters*);
tpes.execute(workers[i]);
}
基本上这种情况是我们有一些我们不知道什么时候会满足的条件。假设我正在使用 8 个线程。我创建了所有 8 个线程,他们做他们的事情并返回。我把他们的结果放在一起,意识到我还没有完成。但是,例如,worker[0] 已经存在。我使用新的 WorkerThread() 调用创建了它。但它现在已经死了,因为它已经完成了运行。如果我再次打电话,workers[0] = new WorkerThread(0, new parameter )...是否允许?我需要更多线程,我已经有一个(现在)死线程数组......我可以将它们指向其他东西吗?GC 是否正确收集了旧线程?