【发布时间】:2017-09-02 21:51:20
【问题描述】:
所以我正在使用 executorservice 创建一个线程池。
ExecutorService executor = Executors.newSingleThreadExecutor();
我正在尝试访问线程池队列中的任务数。我看到没有方法可以做到这一点。 我知道有一些方法可以在 threadpoolexecutor 中获取队列大小,但是如何使用 executorservice 对象来做到这一点。
就像我说的,如果我创建了这样的 ThreadpoolExecutor,我可以获得队列信息
ThreadPoolExecutor tpExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
我知道我可以使用 tpExecutor.queue.size() 来获取线程池队列中的任务数。 但目前我已经使用 Executor Service 声明了我的线程池。我怎样才能做到这一点? 如果人们可以编写代码并进行演示,那将是非常可观的。
【问题讨论】:
-
Executors.newFixedThreadPool(nThreads)nThreads =1? -
我会从中得到什么?如何获取线程池队列中的任务数?请详细说明。
-
假设
newSingleThreadExecutor()实际上返回了ThreadPoolExector的类型,您可以只转换对象并调用 docs.oracle.com/javase/8/docs/api/java/util/concurrent/… 不知道为什么这很重要。 -
@markspace 你的假设是错误的,看看我下面的评论。
标签: java multithreading executorservice threadpoolexecutor