为了账号安全,请及时绑定邮箱和手机立即绑定

使用 BlockingQueue<Runnable> 作为参数的构造函数创建的

使用 BlockingQueue<Runnable> 作为参数的构造函数创建的

拉丁的传说 2022-07-27 20:33:12
for 的构造函数具有asThreadPoolExecutor的类型参数。 假设我有一个这样的声明BlockingQueueRunnableThreadPoolExecutorThreadPoolExecutor customThreadPool = new ThreadPoolExecutor(numberOfAvailableProcessors,                                numberOfAvailableProcessors, 2L,                                TimeUnit.MILLISECONDS,                                new LinkedBlockingQueue<>(),                                Executors.defaultThreadFactory(),                                new RejectedExecutionHandler() {                                    @Override                                    public void rejectedExecution(Runnable r, ThreadPoolExecutor threadPoolExecutor) {                                        // Do something here to handle it                                    }                                });  我的问题是什么时候做类似的事情:customThreadPool.submit(new Callable<Integer>() {                @Override                public Integer call() throws Exception {                    return Math.toIntExact(Thread.currentThread().getId());                }            })  ThreadPool即使我指定了 to 的类型参数,如何处理Queue这个问题Runnable?这个任务将如何排队?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

那是因为它将您的Callable任务包装为RunnableFuture在排队或执行之前。

RunnableFuture实现Runnable了接口(除了Future)。

因此,所有可调用对象都可以毫无问题地排队和执行。

查看AbstractExecutorService源以获取更多信息。


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信