java线程池执行器默认值
我正在阅读Oracles文档,特别是关于排队的文档,以防请求超过可用线程。但是,我没有找到默认设置是什么 要实例化执行器,我只需执行以下操作:java线程池执行器默认值,java,multithreading,oracle,executor,queueing,Java,Multithreading,Oracle,Executor,Queueing,我正在阅读Oracles文档,特别是关于排队的文档,以防请求超过可用线程。但是,我没有找到默认设置是什么 要实例化执行器,我只需执行以下操作: executor = Executors.newFixedThreadPool(numberOfThreads); 其中executor来自java.util.concurrent.ExecutorService,executor是由java.util.concurrent.Executors给出的 从这里开始,执行人再次出现的唯一一行是: execu
executor = Executors.newFixedThreadPool(numberOfThreads);
其中executor来自java.util.concurrent.ExecutorService,executor是由java.util.concurrent.Executors给出的
从这里开始,执行人再次出现的唯一一行是:
executor.execute(worker);
如您所见,我从未设置任何关于执行器正在使用的队列类型或大小的属性
我想知道的是,我链接的文档中描述的策略中有哪些正在使用
对于我所展示的实现:我使用的是无界队列吗?它有界吗?如果是,默认尺寸是多少 您只需阅读:
公共静态执行器服务newFixedThreadPool(int-nThreads)
创建一个线程池,该线程池重用在共享的无界队列上运行的固定数量的线程。在任何时候,最多N个线程将是活动的处理任务。如果在所有线程都处于活动状态时提交其他任务,它们将在队列中等待,直到有线程可用
(强调矿山)
如果您想获得最大的灵活性,可以使用ThreadPoolExecutor构造函数,它可以让您选择所需的每个细节。您只需阅读:
公共静态执行器服务newFixedThreadPool(int-nThreads)
创建一个线程池,该线程池重用在共享的无界队列上运行的固定数量的线程。在任何时候,最多N个线程将是活动的处理任务。如果在所有线程都处于活动状态时提交其他任务,它们将在队列中等待,直到有线程可用
(强调矿山)
如果您想获得最大的灵活性,可以使用ThreadPoolExecutor构造函数,它可以让您选择所需的每个细节。请参阅Executors src
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor (nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue <Runnable >());
}
publicstaticexecutorservice newFixedThreadPool(int-nThreads){
返回新的ThreadPoolExecutor(第n个线程,第n个线程,
0L,时间单位为毫秒,
新LinkedBlockingQueue());
}
正如我们所看到的,它是无限的LinkedBlockingQueue
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor (nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue <Runnable >());
}
publicstaticexecutorservice newFixedThreadPool(int-nThreads){
返回新的ThreadPoolExecutor(第n个线程,第n个线程,
0L,时间单位为毫秒,
新LinkedBlockingQueue());
}
正如我们所看到的,它是无界LinkedBlockingQueue