Java模拟并发详解编程语言
2023-06-13 09:20:22 时间
public static void main(String[] args) throws InterruptedException {
// 锁住所有线程,等待并发执行
final CountDownLatch begin = new CountDownLatch(1);
final ExecutorService exec = Executors.newFixedThreadPool(10);
for (int index = 0; index 100; index++)
{
final int NO = index + 1;
Runnable run = new Runnable()
{
public void run() {
try {
// 等待,所有一起执行
begin.await();
//*****执行程序去********//
????????????
//*****执行程序去********//
} catch (InterruptedException e)
{
e.printStackTrace();
}
finally {
}
}
};
exec.submit(run);
}
System.out.println( 开始执行
// begin减一,开始并发执行
begin.countDown();
//关闭执行
exec.shutdown();
}
}
public class CountdownLatchTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); //创建一个线程池 final CountDownLatch cdOrder = new CountDownLatch(1);//构造方法参数指定计数的次数 final CountDownLatch cdAnswer = new CountDownLatch(3);//构造方法参数指定计数的次数 for(int i=0;i i++){ Runnable runnable = new Runnable(){ public void run(){ try { System.out.println( 线程 + Thread.currentThread().getName() + 正准备接受命令 cdOrder.await(); //战士们都处于等待命令状态 System.out.println( 线程 + Thread.currentThread().getName() + 已接受命令 Thread.sleep((long)(Math.random()*10000)); System.out.println( 线程 + Thread.currentThread().getName() + 回应命令处理结果 } catch (Exception e) { e.printStackTrace(); } finally { cdAnswer.countDown(); //任务执行完毕,返回给指挥官,cdAnswer减1。 } } }; service.execute(runnable);//为线程池添加任务 } try { Thread.sleep((long)(Math.random()*10000)); System.out.println( 线程 + Thread.currentThread().getName() + 即将发布命令 cdOrder.countDown(); //发送命令,cdOrder减1,处于等待的战士们停止等待转去执行任务。 System.out.println( 线程 + Thread.currentThread().getName() + 已发送命令,正在等待结果 cdAnswer.await(); //命令发送后指挥官处于等待状态,一旦cdAnswer为0时停止等待继续往下执行 System.out.println( 线程 + Thread.currentThread().getName() + 已收到所有响应结果 } catch (Exception e) { e.printStackTrace(); } finally { } service.shutdown(); //任务结束,停止线程池的所有线程 } }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/7536.html
cjava相关文章
- 在java中print和println_JAVA命令行参数
- java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」
- java转换字符串为时间_JAVA字符串转日期或日期转字符串
- java数组排序去重_JAVA数组去重排序
- think in java一_Think in Java(一):Java基础「建议收藏」
- java环境_Java 开发环境配置
- 物业管理系统源码java_Java小区物业管理系统 源码报告下载
- java对象和类
- Java字符串转集合_java集合转数组
- Java抽象工厂模式的使用方法
- 一款漂亮的Java行为验证码
- Java判断图片格式的代码详解编程语言
- Java网站在Linux上的运行(java网站linux)
- Java与Oracle的完美结合(java和oracle)
- 互操作Java与Redis缓存互操作实践(redis缓存与java)
- 探析Linux下Java的应用及优势(linuxjave)
- MySQL与Java的数据交互之旅(mysql对应java)
- 实现高并发:Java利用Redis秒杀成功(java秒杀redis)
- Linux系统中下载Java的方法(linux下java下载)
- 深入认识Java面试与MySQL及其思考(java面试mysql)
- Java数据库之MySQL学习使用教程(mysql中java教程)
- Java模拟Oracle实现稳定数据库性能(java模仿oracle)
- 构建基于Java和Oracle的强大技术栈(java架构oracle)
- Java的wait(),notify()和notifyAll()使用心得