Java并发编程:线程池与任务调度案例
在Java的并发编程中,线程池和任务调度是非常重要的概念。下面我们将通过一个实际案例来理解它们。
首先,我们创建一个简单的任务类:
public class Task implements Runnable {
private String message;
public Task(String message) {
this.message = message;
}
@Override
public void run() {
System.out.println("Task: " + message);
}
}
接下来,我们将使用ThreadPoolExecutor创建一个线程池,并进行任务调度:
import java.util.concurrent.*;
public class ThreadPoolExample {
private static final int THREAD_COUNT = 5; // 线程池大小
public static void main(String[] args) {
// 创建线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
THREAD_COUNT, // 核心线程数
Integer.MAX_VALUE, // 线程最大数量,可无限
60L, // 单位:秒,任务执行超时时间
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(10) // 工作队列,用于存放等待的任务
);
// 提交任务到线程池
for (int i = 0; i < 20; i++) {
String message = "Task " + i;
executor.execute(new Task(message)));
}
// 关闭线程池
executor.shutdown();
}
}
在这个例子中,我们创建了一个包含5个线程的线程池。然后,我们提交了20个任务到线程池进行执行。
当所有的任务完成后,我们调用executor.shutdown()
来关闭线程池并等待所有工作完成。
通过这个案例,你可以深入理解Java并发编程中的线程池和任务调度。
还没有评论,来说两句吧...