java - Executor 内部的数据结构

标签 java concurrency executorservice executors

我们可以在定义 ThreadPoolExecutors 时提供 BlockingQueue 实现。但是,如果我使用工厂(执行器)创建单个线程池(如下所示),我想知道使用哪个阻塞队列。我猜它是一个 LinkedBlockingQueue。文档讨论了无界队列,但没有透露实现。

ExectorService service = Executors.newSingleThreadExecutor();

最佳答案

这是来自 Executors src:

public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue<Runnable>()));
}

关于java - Executor 内部的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486163/

相关文章:

java - 强制 Java/Eclipse 在堆栈跟踪中提供更多信息

Java Concurrent - 没有 speedUp 获得 LU 算法 - 虚假共享?

Go 的 sync.WaitGroup 丢失了其中一个响应

java - 为什么 java ExecutorService newSingleThreadExecutor 产生两个线程?

java - 有条件地禁用 jButton

java - 可重入锁对象锁定

选择语句 channel 示例

java - 使用@PreDestroy关闭@Bean ExecutorService

Java ExecutorService堆空间问题

java - 如何通过蓝牙通过多部手机传输音乐