ThreadFactory threadFactory = Executors.defaultThreadFactory();都有哪些?如何使用?
时间: 2024-05-13 11:18:35 浏览: 7
`Executors.defaultThreadFactory()` 方法返回的是一个默认的线程工厂,用于创建新线程。这个线程工厂会创建一个新的线程,线程名字由 `ThreadFactory` 中的 `namePrefix` 和一个递增的数字序号组成。
除了默认的线程工厂,Java 还提供了多个线程工厂,如下所示:
1. `ThreadFactoryBuilder`:可以通过 `ThreadFactoryBuilder` 类来创建一个自定义的线程工厂。
```
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("my-pool-%d").build();
```
这个线程工厂会创建一个名字以 "my-pool-" 开头,后面跟一个递增数字的线程。
2. `Executors.privilegedThreadFactory()`:返回一个特权线程工厂,用于在特权上下文中创建线程。
3. `ForkJoinPool.ForkJoinWorkerThreadFactory`:用于创建 `ForkJoinPool` 中的工作线程。
使用线程工厂的方式很简单,只需要在创建线程池时指定即可。例如,使用默认的线程工厂:
```
ExecutorService executor = Executors.newFixedThreadPool(10, Executors.defaultThreadFactory());
```
如果要使用自定义的线程工厂,则将其传递给 `ThreadFactoryBuilder` 的 `build()` 方法即可。
```
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("my-pool-%d").build();
ExecutorService executor = Executors.newFixedThreadPool(10, namedThreadFactory);
```