Java中的线程池:如何避免资源浪费的实例

原创 快来打我* 2024-12-11 04:36 147阅读 0赞

在Java中,线程池是一种管理和复用线程的方式。通过预创建一定数量的线程,当有新的任务需要执行时,只需要将任务放入队列,由线程池自动分配和处理,从而避免了频繁创建和销毁线程的资源浪费。

以下是一个简单的线程池实现例子(使用Java内置的ThreadPoolExecutor):

  1. import java.util.concurrent.ExecutorService;
  2. import java.util.concurrent.Executors;
  3. public class ThreadPoolExample {
  4. public static void main(String[] args) {
  5. // 创建一个线程池,大小为5个线程
  6. ExecutorService executor = Executors.newFixedThreadPool(5);
  7. // 提交任务到线程池
  8. for (int i = 0; i < 10; i++) {
  9. executor.submit(() -> {
  10. System.out.println("Task " + i + " is running on thread " + Thread.currentThread().getId());
  11. try {
  12. Thread.sleep(1000); // 模拟耗时操作
  13. } catch (InterruptedException e) {
  14. e.printStackTrace();
  15. }
  16. System.out.println("Task " + i + " completed on thread " + Thread.currentThread().getId());
  17. });
  18. }
  19. // 关闭线程池,所有提交的任务会全部完成
  20. executor.shutdown();
  21. // 验证任务是否已经完成
  22. while (!executor.isTerminated())) {
  23. try {
  24. Thread.sleep(1000); // 模拟检查频率
  25. } catch (InterruptedException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. System.out.println("All tasks completed.");
  30. }
  31. }

这个例子中,线程池使用了ThreadPoolExecutor.newFixedThreadPool(5)来创建,预设了5个线程。当有新的任务提交时,这些线程会去执行任务。任务完成后,线程会自动返回给线程池,等待下一次的任务分配。

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

发表评论

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

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

相关阅读