java语言 帮我使用ThreadPoolExecutor创建多线程,每个线程定时10秒打印当前线程名 使用new ThreadPoolExecutor的构造方法设置核心线程池长度等参数,这样更好调节
时间: 2023-08-10 09:02:29 浏览: 99
好的,我可以帮你使用 ThreadPoolExecutor 来创建多线程,并且每个线程定时10秒打印当前线程名。以下是示例代码:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
int corePoolSize = 5; // 核心线程池大小
int maxPoolSize = 10; // 最大线程池大小
long keepAliveTime = 5000; // 线程空闲时间上限,超过该时间就会被回收
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, Executors.defaultThreadFactory());
for (int i = 0; i < 10; i++) {
threadPoolExecutor.execute(new WorkerThread());
}
threadPoolExecutor.shutdown();
}
static class WorkerThread implements Runnable {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(10); // 线程休眠10秒
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
以上代码会创建一个 ThreadPoolExecutor 对象,核心线程池大小为5,最大线程池大小为10,线程空闲时间上限为5秒。然后通过循环提交任务(WorkerThread),每个任务会休眠10秒并打印当前线程名。最后调用 `shutdown()` 方法关闭线程池。
希望这可以帮助到你!如果还有其他问题,请随时提问。