Java并发库:线程池与定时器的使用示例

原创 忘是亡心i 2024-10-17 10:27 168阅读 0赞

在Java中,我们可以使用java.util.concurrent包中的工具来管理线程池和定时任务。以下是这两个工具的使用示例:

  1. 线程池(ThreadPoolExecutor)

线程池是一个可重用的、无状态且线程安全的工作单元,它将多个作业提交给单个工作线程执行。

以下创建一个线程池并添加任务的示例:

  1. import java.util.concurrent.*;
  2. public class ThreadPoolExample {
  3. public static void main(String[] args) {
  4. // 创建线程池,最大线程数为10,空闲线程后等待时间5秒
  5. ExecutorService executor = Executors.newFixedThreadPool(10, new ThreadFactory() {
  6. @Override
  7. public Thread newThread(Runnable r) {
  8. Thread t = new Thread(r);
  9. t.setName("Task-" + t.getId()); // 设置线程名称
  10. return t;
  11. }
  12. }));
  13. // 提交任务到线程池执行
  14. for (int i = 0; i < 50; i++) {
  15. Runnable worker = () -> {
  16. System.out.println("Task " + (i + 1)) + " is running by " + Thread.currentThread().getName();
  17. try {
  18. Thread.sleep(1000);
  19. } catch (InterruptedException e) {
  20. e.printStackTrace();
  21. }
  22. };
  23. executor.execute(worker); // 提交任务
  24. }
  25. // 关闭线程池,释放资源
  26. executor.shutdown();
  27. while (!executor.isTerminated())) {
  28. System.out.println("Executor is still running...");
  29. try {
  30. Thread.sleep(1000);
  31. } catch (InterruptedException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
  36. }
  1. 定时器(Timer)

定时器是Java中用于在给定时间后执行任务的工具。

以下创建一个定时器并添加任务的示例:

  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3. public class TimerExample {
  4. public static void main(String[] args) {
  5. // 创建一个新的定时器,周期为1秒
  6. Timer timer = new Timer();
  7. // 定义一个任务,任务是打印一条消息
  8. TimerTask task = new TimerTask() {
  9. @Override
  10. public void run() {
  11. System.out.println("Timer Task executed at: " + new Date());
  12. }
  13. };
  14. // 将任务添加到定时器中,延迟时间为5秒
  15. timer.schedule(task, 5000);
  16. // 关闭定时器,释放资源
  17. timer.cancel();
  18. }
  19. }

以上示例展示了如何使用线程池(ThreadPoolExecutor)和定时器(Timer)来处理Java并发任务。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,168人围观)

还没有评论,来说两句吧...

相关阅读