Executors.newSingleThreadExecutor() - 如何查看队列中有多少任务

时间:2011-05-04 12:29:21

标签: java multithreading

我在我的代码中使用Executors.newSingleThreadExecutor()。 我想监视队列中的任务数量,以检查处理器是否没有超载消息。如何才能获得许多未完成的指定任务? 我期待这样的事情:

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new Runnable() {...});
executor.submit(new Runnable() {...});
executor.submit(new Runnable() {...});
// do something and get 3
...
// do something and get 2
...
// do something and get 1

由于

2 个答案:

答案 0 :(得分:6)

万一你要保证即使使用新版本的JVM,FlorianOver建议的代码也能正常工作,你可以这样做:(对于Executors.newSingleThreadExecutor()方法将不再返回的情况ThreadPoolExecutor类型的实例)

ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());

// ...

int queueSize = executor.getQueue().size();

答案 1 :(得分:0)

不是这样的吗?

((ThreadPoolExecutor) executor).getQueue().size();