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

标签 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

谢谢

最佳答案

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

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

// ...

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

关于java - Executors.newSingleThreadExecutor() - 如何查看队列中有多少任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883373/

相关文章:

Java 编译器不优化字符串连接

c# - System.Threading.Tasks 在 Visual Studio 2010 Express 中可用吗?

c# - 如何减少生成的事件数

java - 根据参数输入减少或增加循环

java - SSD 损坏可以更改 txt 文件中的字符吗?

c++ - IF 的原子性和下面的语句

c - 计算多进程程序的运行时间的最佳方法是什么?

c# - 为什么 'RunWorkerCompleted' 在错误的线程上执行?

java - 如何为 Java 7 中的现有国家/地区代码向 java.util.Currency 添加新货币?

java - Jsoup 选择器 - 如何选择 <div> 元素内的所有 <p> 元素,除了最后一个 <p> 元素?