【发布时间】:2011-02-09 02:54:20
【问题描述】:
我正在尝试尽快处理来自数据库表的任务队列,同时限制处理任务的线程数。
我正在使用带有 Executors.newFixedThreadPool(N);
我想知道是否有办法知道线程池是否已满,我的意思是当前是否有 50 个线程正在运行,如果是,那么我将等待一个线程可用,然后再启动一个新线程而不是让主线程休眠。
我想做的代码:
ExecutorService executor = Executors.newFixedThreadPool(N);
ResultSet results;
while( true ) {
results = getWaitingTasksStmt.executeQuery();
while( results.next() && executor.notFull() ) {
executor.submit( new thread( new runnableInheritedClass(results) ) );
}
}
【问题讨论】:
-
执行器创建线程。你应该把runnables/callables放在那里。如果 N 设置为 50 并且 50 是您的限制,则固定线程池不会创建新线程。
标签: java multithreading threadpool