T T*_*T T 0 java multithreading threadpool
好吧,标题的措辞有点奇怪,但我真的不知道如何表达它.基本上,从我对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]);
}
Run Code Online (Sandbox Code Playgroud)
基本上这种情况是我们有一些条件,我们不知道何时会满足.假设我使用8个线程.我创建所有8个线程,他们做他们的事情并返回.我把他们的结果放在一起,意识到我还没有完成.但是,例如,worker [0]已经存在.我用一个新的WorkerThread()调用创建了它.但它现在已经死了,因为它已经完成了.如果我打电话,AGAIN,工人[0] =新的WorkerThread(0,新参数)......是允许的吗?我需要更多线程,我已经有一个已经(现在)死线程的数组......我可以将它们指向其他东西吗?GC是否正确收集旧线程?
首先要做的事情是:您不向Executor Service 提交线程.您提交的任务只是实现的对象run.Executor Service完全控制线程池.
您可以轻松地安排相同Runnable的次数,每次您收到另一个FutureTask对象,告诉您它是否已完成并允许您取消它.这些FutureTask对象不可重用,但这没问题.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |