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

for 的构造函数具有asThreadPoolExecutor的类型参数。 假设我有一个这样的声明BlockingQueueRunnable

ThreadPoolExecutor


ThreadPoolExecutor 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?

这个任务将如何排队?


拉丁的传说
浏览 116回答 1
1回答

鸿蒙传说

那是因为它将您的Callable任务包装为RunnableFuture在排队或执行之前。这RunnableFuture实现Runnable了接口(除了Future)。因此,所有可调用对象都可以毫无问题地排队和执行。查看AbstractExecutorService源以获取更多信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java