Java并发编程:线程池和定时任务的应用实例

原创 电玩女神 2024-12-11 19:36 80阅读 0赞

在Java并发编程中,线程池和定时任务是两种常用的管理和调度方式。下面我们将通过实际的代码示例来解释这两种技术的应用。

  1. 线程池

线程池是一种预先创建好一定数量线程,并将这些线程存储在一个共享的容器中的机制。使用线程池可以避免频繁创建和销毁线程带来的性能开销。

以下是一个简单的Java线程池应用实例:

  1. import java.util.concurrent.ExecutorService;
  2. import java.util.concurrent.Executors;
  3. public class ThreadPoolExample {
  4. public static void main(String[] args) {
  5. // 创建一个固定大小的线程池
  6. ExecutorService executor = Executors.newFixedThreadPool(5);
  7. // 提交任务到线程池
  8. for (int i = 0; i < 10; i++) {
  9. final int taskIndex = i;
  10. executor.submit(() -> {
  11. System.out.println("Task " + taskIndex + " is running by thread: " + Thread.currentThread().getName());
  12. // 这里是任务执行逻辑,可以根据需要实现
  13. try {
  14. Thread.sleep(1000); // 模拟耗时操作
  15. } catch (InterruptedException e) {
  16. e.printStackTrace();
  17. }
  18. System.out.println("Task " + taskIndex + " completed by thread: " + Thread.currentThread().getName());
  19. });
  20. }
  21. // 关闭线程池,释放资源
  22. executor.shutdown();
  23. while (!executor.isTerminated())) {
  24. try {
  25. Thread.sleep(100); // 等待一段时间防止干扰
  26. } catch (InterruptedException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. System.out.println("All threads in the pool have completed.");
  31. }
  32. }

这个例子展示了如何创建一个固定大小的线程池,然后提交任务到线程池中。当所有任务执行完毕后,关闭线程池释放资源。

  1. 定时任务

Java中的java.util.concurrent包提供了ScheduledExecutorService来实现定时任务。以下是一个简单的定时任务应用示例:

  1. import java.util.concurrent.Executors;
  2. import java.util.concurrent.ScheduledExecutorService;
  3. import java.util.concurrent.TimeUnit;
  4. public class DelayedTaskExample {
  5. public static void main(String[] args) {
  6. // 创建一个单线程的ScheduledExecutorService实例
  7. ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
  8. // 提交一个延迟1秒执行的任务到线程池
  9. executor.schedule(() -> {
  10. System.out.println("Delayed task executed after a delay of 1 second.");
  11. }, 1, TimeUnit.SECONDS));
  12. // 关闭ScheduledExecutorService以释放资源
  13. executor.shutdown();
  14. }
  15. }

这个例子展示了如何使用ScheduledExecutorService创建一个单线程定时任务执行器,然后提交延迟执行的任务到线程池中。当所有任务执行完毕后,关闭定时任务执行器以释放资源。

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

发表评论

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

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

相关阅读