hot*_*zen 5 java concurrency multithreading scala pool
我想要一个提供最多X个线程来处理任务的线程池,到目前为止没问题.但是,每个提交的任务都可以指定特定限制的IO目标(比如Y).
因此,提交的IOTask以限制4(Y)返回目标"google.com",并且池具有全局限制16(X).我想提交10个google.com-tasks,其中只有4个并行处理,并且该池有12个线程可用于其他任务.
我怎样才能做到这一点?
您可以将两个 ExecutorService 实例包装在自定义类中,并手动管理任务的提交,如下所示:
class ExecutorWrapper {
private ExecutorService ioExec = Executors.newFixedThreadPool(4);
private ExecutorService genExec = Executors.newFixedThreadPool(12);
public Future<?> submit(final IOTask task) {
return ioExec.submit(task);
}
public Future<?> submit(final Runnable task) {
return genExec.submit(task);
}
}
interface IOTask extends Runnable {}
Run Code Online (Sandbox Code Playgroud)
这允许您使用 4 个线程来执行 IO 操作,并让其他 12 个线程来服务其他任务。
归档时间: |
|
查看次数: |
1198 次 |
最近记录: |