Java并发库:线程池与定时器的使用示例
在Java中,我们可以使用java.util.concurrent
包中的工具来管理线程池和定时任务。以下是这两个工具的使用示例:
- 线程池(ThreadPoolExecutor)
线程池是一个可重用的、无状态且线程安全的工作单元,它将多个作业提交给单个工作线程执行。
以下创建一个线程池并添加任务的示例:
import java.util.concurrent.*;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建线程池,最大线程数为10,空闲线程后等待时间5秒
ExecutorService executor = Executors.newFixedThreadPool(10, new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setName("Task-" + t.getId()); // 设置线程名称
return t;
}
}));
// 提交任务到线程池执行
for (int i = 0; i < 50; i++) {
Runnable worker = () -> {
System.out.println("Task " + (i + 1)) + " is running by " + Thread.currentThread().getName();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
};
executor.execute(worker); // 提交任务
}
// 关闭线程池,释放资源
executor.shutdown();
while (!executor.isTerminated())) {
System.out.println("Executor is still running...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
- 定时器(Timer)
定时器是Java中用于在给定时间后执行任务的工具。
以下创建一个定时器并添加任务的示例:
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
// 创建一个新的定时器,周期为1秒
Timer timer = new Timer();
// 定义一个任务,任务是打印一条消息
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Timer Task executed at: " + new Date());
}
};
// 将任务添加到定时器中,延迟时间为5秒
timer.schedule(task, 5000);
// 关闭定时器,释放资源
timer.cancel();
}
}
以上示例展示了如何使用线程池(ThreadPoolExecutor)和定时器(Timer)来处理Java并发任务。
还没有评论,来说两句吧...