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
源以获取更多信息。
添加回答
举报
0/150
提交
取消