ForkJoinPool默认配置
时间: 2023-07-12 19:01:24 浏览: 74
ForkJoinPool 的默认配置如下:
1. parallelism:CPU 核心数。
2. work-stealing:开启。
3. asyncMode:关闭。
4. keepAliveTime:20 秒。
5. queue:WorkQueue。
默认情况下,ForkJoinPool 的并行度是 CPU 核心数,它会自动检测当前系统的 CPU 核心数,并设置相应的并行度。工作窃取算法是开启的,这样线程可以从其他线程的任务队列中获取任务,提高了线程的利用率。异步模式是关闭的,这意味着任务提交后需要等待任务执行完成。空闲线程的保活时间是 20 秒,如果线程在这段时间内没有任务可执行,那么它会被终止。任务队列默认是 WorkQueue,这是一种基于数组的队列实现,具有高效的随机访问和入队出队操作。
相关问题
ForkJoinPool创建线程池
是的,ForkJoinPool是Java中的一个线程池,主要用于执行分治任务。它是Java 7引入的一个新特性,可以利用多核处理器提高并行计算性能。ForkJoinPool使用工作窃取算法,即当一个线程的任务执行完后,它会从其他线程的任务队列中窃取任务来执行,以保证各个线程的任务负载较为均衡。
ForkJoinPool的使用方法与其他线程池类似,可以通过构造函数或者静态工厂方法来创建线程池。例如:
```
ForkJoinPool pool = new ForkJoinPool();
```
这样就创建了一个默认的ForkJoinPool线程池,它的线程数等于CPU核心数。也可以通过构造函数来指定线程池的参数,例如:
```
ForkJoinPool pool = new ForkJoinPool(4);
```
这样就创建了一个包含4个线程的ForkJoinPool线程池。在使用ForkJoinPool时,需要定义一个ForkJoinTask任务,例如:
```
class MyTask extends RecursiveTask<Integer> {
protected Integer compute() {
// 执行任务
}
}
// 创建任务
MyTask task = new MyTask();
// 执行任务
int result = pool.invoke(task);
```
这里的MyTask是一个继承自ForkJoinTask的任务,它的compute()方法中定义了任务的具体执行过程。执行任务的方式是通过ForkJoinPool的invoke()方法来调用,它会返回任务的执行结果。
当然,除了invoke()方法之外,ForkJoinPool还提供了其他一些方法来执行任务,例如submit()和execute()方法。同时,ForkJoinPool也支持设置线程池的一些属性,例如任务窃取的策略、线程池的名称等。
forkjoinpool参数
ForkJoinPool 是 Java 中的一个线程池,它可以执行 Fork-Join 操作。Fork-Join 操作是一种并行编程模型,它将一个大任务分解成多个小任务,然后再将小任务合并起来得到最终结果。ForkJoinPool 的参数可以通过构造函数进行配置,其中最重要的参数是:
1. parallelism:并行度,表示 ForkJoinPool 中并行执行任务的线程数。默认值是 CPU 核心数。
2. work-stealing:工作窃取算法开关。默认是开启的,如果关闭,那么线程只会从自己的队列中获取任务,而不会从其他线程的队列中获取任务,这可能导致某些线程一直忙碌而其他线程一直空闲。
3. asyncMode:异步模式开关。默认是关闭的,如果开启,那么 ForkJoinPool 可以执行异步任务,也就是可以提交一个任务而不需要等待它执行完成。
4. keepAliveTime:线程空闲时间。默认是 20 秒,如果一个线程在这段时间内没有任务可执行,那么它会被终止。
5. queue:任务队列类型。默认是 WorkQueue,也可以选择其他类型的队列。
这些参数可以通过 ForkJoinPool 的构造函数进行配置,也可以通过相应的 setter 方法进行修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)