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

原创 一时失言乱红尘 2024-09-18 10:33 217阅读 0赞

在Java中,线程池是一种管理和复用线程的机制。通过预创建一定数量的线程,当有新的任务到来时,可以立即从线程池中获取线程进行处理,而不需要每次都创建一个新的线程。

下面是一个简单的线程池使用示例:

  1. import java.util.concurrent.Executors;
  2. import java.util.concurrent.TimeUnit;
  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. Runnable task = new Task("Task " + i);
  10. executor.execute(task);
  11. }
  12. // 关闭线程池
  13. executor.shutdown();
  14. // 确保所有任务都已完成
  15. try {
  16. if (!executor.isTerminated()) {
  17. System.out.println("Error: Some tasks did not complete.");
  18. return;
  19. }
  20. } catch (InterruptedException e) {
  21. System.err.println("Interrupted while checking status.");
  22. Thread.currentThread().interrupt();
  23. return;
  24. }
  25. System.out.println("All tasks completed successfully.");
  26. // 计算线程池总共耗时
  27. long duration = executor.shutdownTimeout() > 0 ?
  28. executor.shutdownTimeout() :
  29. executor.awaitTermination(true, TimeUnit.HOURS));
  30. System.out.println("Total execution time: " + duration + " seconds.");
  31. }
  32. }
  33. class Task implements Runnable {
  34. private String name;
  35. public Task(String name) {
  36. this.name = name;
  37. }
  38. @Override
  39. public void run() {
  40. System.out.println("Task " + name + " started.");
  41. try {
  42. Thread.sleep(2000);
  43. } catch (InterruptedException e) {
  44. Thread.currentThread().interrupt();
  45. }
  46. System.out.println("Task " + name + " completed.");
  47. }
  48. }

这个示例创建了一个固定大小的线程池,然后提交了10个任务到线程池中。最后关闭线程池并检查所有任务是否都已完成。

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

发表评论

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

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

相关阅读

    相关 Java并发编程线示例

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