Java并发工具库使用:定时器和线程池示例
Java的并发工具库主要包括java.util.concurrent
包,其中包含了多种线程管理工具。以下我们将通过两个例子来演示定时器和线程池的使用。
- 定时器(
java.util.concurrent.Timer
)
import java.util.concurrent.TimeUnit;
public class TimerExample {
private final Timer timer = new Timer();
public void scheduleTask(String taskName, long delay) {
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(taskName + " executed after " + delay + " milliseconds");
}
}, delay, TimeUnit.MILLISECONDS);
}
public static void main(String[] args) {
TimerExample example = new TimerExample();
example.scheduleTask("Task 1", 2000); // Delay for 2 seconds
example.scheduleTask("Task 2", 5000); // Delay for 5 seconds
}
}
在这个例子中,我们创建了一个定时器,并通过它来安排任务。任务在指定的时间延迟后执行。
- 线程池(
java.util.concurrent.Executors
)
线程池提供了一种管理和重复利用多个线程的方式。下面是一个使用线程池的简单示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池,大小为5个线程
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务到线程池执行
for (int i = 0; i < 10; i++) { // 每次提交10个任务
Runnable task = new Task(i);
executor.execute(task); // 执行任务
}
// 关闭线程池,所有提交的任务会全部被取消并等待被处理
executor.shutdown();
}
}
class Task implements Runnable {
private int index;
public Task(int index) {
this.index = index;
}
@Override
public void run() {
System.out.println("Task " + index + " executed by thread " + Thread.currentThread().getName());
}
}
在这个例子中,我们创建了一个固定大小的线程池,然后提交了10个任务到线程池执行。每个任务都会在独立的线程上运行。当所有任务完成后,我们会关闭线程池以释放资源并等待其他任务被处理。
还没有评论,来说两句吧...