如何在不使用`Executors.newSingleThreadScheduledExecutor`的情况下使用单个线程创建`ScheduledThreadPoolExecutor`?

时间:2012-08-07 14:02:30

标签: java executorservice threadpoolexecutor

如何在不使用ScheduledThreadPoolExecutor的情况下使用单个帖子创建Executors.newSingleThreadScheduledExecutor

我想这样做的原因是后面的调用返回DelegatedScheduledExecutorService的实例,而不是ThreadPoolExecutor的实例,所以我试图能够使用{{1}等方法等失败了。如果我可以直接创建getQueue(),那将有所帮助。

我想要ThreadPoolExecutor的原因是没有其他方法可以知道当前在执行程序中排队的任务的大小。

2 个答案:

答案 0 :(得分:1)

你可以手动创建它(这是Executors.newScheduledThreadPool()所做的内容,除了你需要一个强制转换以你想要的方式使用返回的对象):

ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(1);
BlockingQueue q = scheduler.getQueue();

答案 1 :(得分:1)