使用Java编写的并发问题实例

原创 た 入场券 2024-09-16 14:15 164阅读 0赞

以下是一个简单的Java并发问题实例,该实例展示了线程池和任务的执行:

  1. import java.util.concurrent.Executors;
  2. import java.util.concurrent.TimeUnit;
  3. public class ConcurrentExample {
  4. private static final int NUM_THREADS = 5; // 创建线程数量
  5. public static void main(String[] args) {
  6. // 创建线程池
  7. ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);
  8. // 提交任务到线程池
  9. for (int i = 0; i < 10; i++) { // 每个任务的执行次数
  10. final int index = i; // 为每个任务提供一个唯一的标识
  11. executorService.submit(() -> {
  12. System.out.println("Task " + index + " started..."); // 执行任务前打印信息
  13. try {
  14. TimeUnit.SECONDS.sleep(2); // 模拟耗时操作
  15. } catch (InterruptedException e) {
  16. e.printStackTrace();
  17. }
  18. System.out.println("Task " + index + " finished..."); // 执行任务后打印信息
  19. });
  20. }
  21. // 关闭线程池
  22. executorService.shutdown();
  23. // 等待所有任务完成(如果有必要)
  24. while (!executorService.isTerminated()) {
  25. try {
  26. Thread.sleep(100); // 间隔一段时间检查
  27. } catch (InterruptedException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. System.out.println("All threads completed.");
  32. }
  33. }

这个例子中,我们创建了一个固定大小的线程池,并提交了10个耗时任务。每个任务完成后都会打印一条消息。

当所有任务完成时,我们会关闭线程池并检查是否还有未完成的任务。如果有,我们将继续等待直到所有任务都完成。

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

发表评论

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

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

相关阅读