Java并发编程:线程池的使用示例

原创 野性酷女 2024-09-20 10:15 148阅读 0赞

在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); // 限制最多同时运行5个任务
  7. // 提交任务到线程池执行
  8. for (int i = 0; i < 10; i++) { // 假设每个任务耗时1秒
  9. executor.submit(new Task(i)); // 传递Task对象给线程池,由它来调用Task的run方法
  10. }
  11. // 关闭线程池,所有提交的任务将全部阻塞直到线程池关闭
  12. executor.shutdown();
  13. // 确保所有任务已经执行完毕(即使任务可能已经阻塞)
  14. while (!executor.isTerminated()) {
  15. try {
  16. Thread.sleep(100); // 每隔100毫秒检查一次,避免频繁同步造成性能损失
  17. } catch (InterruptedException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. // 现在所有任务已经执行完毕且线程池已经被关闭
  22. }
  23. // 一个简单的任务示例
  24. static class Task implements Runnable {
  25. private int id;
  26. public Task(int id) {
  27. this.id = id;
  28. }
  29. @Override
  30. public void run() {
  31. System.out.println("Task " + id + " is running..."); // 任务开始执行时输出消息
  32. try {
  33. Thread.sleep(2000); // 模拟耗时操作,这里设置为2秒
  34. } catch (InterruptedException e) {
  35. e.printStackTrace();
  36. }
  37. System.out.println("Task " + id + " has completed its execution..."); // 任务执行完成后输出消息
  38. }
  39. }
  40. }

这个示例创建了一个固定大小的线程池(5个线程),然后提交了10个耗时的任务到线程池。每个任务在开始执行和执行完毕时都会打印一条消息。

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

发表评论

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

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

相关阅读

    相关 Java并发编程线示例

    在Java中,线程池是一种常用的管理线程的方式。它通过维护一组工作线程,并且根据请求动态添加或回收线程,以提高系统的并发处理能力。 以下是一个简单的线程池示例: ```ja