JAVA设置ThreadPoolExecutor线程优先级
时间: 2024-11-08 20:10:59 浏览: 4
Java 多线程的创建及方法、优先级.docx
在Java中,ThreadPoolExecutor是一个用于管理一组工作线程的工具,它可以让你控制线程的数量、工作队列以及线程的生命周期等。关于设置线程优先级,ThreadPoolExecutor本身并不直接支持对所有线程设置优先级,但是可以对新创建的线程(通常是由它内部的Worker线程)设置优先级。
以下是使用ThreadPoolExecutor设置线程优先级的一个简单示例:
```java
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class CustomThreadPool {
private ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
Integer.MAX_VALUE, // 最大线程数
60, // 空闲线程存活时间(秒)
TimeUnit.SECONDS, // 时间单位
new ArrayBlockingQueue<>(50), // 工作队列
r -> new Thread(r, "CustomThread-" + r.getPriority()) // 创建新的线程时的构造器,这里设置了初始优先级
);
public void execute(Runnable task, int priority) {
if (priority != Thread.NORM_PRIORITY) {
Thread thread = new Thread(task, "CustomThread-" + priority);
thread.setPriority(priority);
executor.execute(thread);
} else {
executor.execute(task);
}
}
// 关闭线程池
public void shutdown() {
executor.shutdown();
}
}
```
在这里,我们在创建新线程时,通过传递一个定制的Thread构造器,设置其初始优先级。然后在execute方法中,如果传入的优先级非默认级别,就直接创建一个新的线程并设置优先级。
阅读全文