【练习】第二十一章 并发

练习6:创建一个任务,它将睡眠1到10s之间的随机数量的时间,然后显示它的睡眠时间并退出。创建并运行一定数量的这种任务。

复制代码
 1 import java.util.*;
 2 import java.util.concurrent.*;
 3 class RandomSleepThread implements Runnable {
 4     public void run() {
 5         try {
 6             Random rand = new Random();
 7             long num = rand.nextInt(10) + 1;
 8             System.out.println(Thread.currentThread().getName() + "睡眠时间:" + num);
 9             TimeUnit.SECONDS.sleep(num);
10         } catch (InterruptedException e) {
11             e.printStackTrace();
12         }
13     }
14 }
15 public class Demo6 {
16 
17     public static void main(String[] args) {
18         ExecutorService exec = Executors.newSingleThreadExecutor();
19         for (int i = 0; i < 10; i++) {
20             exec.execute(new RandomSleepThread());
21         }
22         exec.shutdown();
23     }
24 }
复制代码
复制代码
运行结果:
  pool-1-thread-1睡眠时间:9   pool-1-thread-1睡眠时间:7   pool-1-thread-1睡眠时间:9   pool-1-thread-1睡眠时间:2   pool-1-thread-1睡眠时间:9   pool-1-thread-1睡眠时间:1   pool-1-thread-1睡眠时间:2   pool-1-thread-1睡眠时间:10   pool-1-thread-1睡眠时间:7   pool-1-thread-1睡眠时间:2
复制代码

总结:  

  用SingleThreadExecutor来运行,保证在任意时刻在任何线程中都只有唯一的任务在运行,每个任务都在完成随机的睡眠时间后结束,接着进行下一个任务。

 

posted @   淡忘的江南  阅读(208)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示