=========================one=============================

public class Bingfa {

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();    
    }
}

==========================two==================================

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<3;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(); //任务结束,停止线程池的所有线程  
    }  
}

转载:http://blog.csdn.net/zhao9tian/article/details/40346899

Java模拟并发的更多相关文章

  1. 【实战Java高并发程序设计 5】让普通变量也享受原子操作

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  2. 【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference AtomicReference无法解决上述问题的根 ...

  3. Java模拟登录系统抓取内容【转载】

    没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下....     为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...

  4. 《实战java高并发程序设计》源码整理及读书笔记

    日常啰嗦 不要被标题吓到,虽然书籍是<实战java高并发程序设计>,但是这篇文章不会讲高并发.线程安全.锁啊这些比较恼人的知识点,甚至都不会谈相关的技术,只是写一写本人的一点读书感受,顺便 ...

  5. Java高并发如何解决

    Java高并发如何解决 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧 ...

  6. 转载:Java高并发,如何解决,什么方式解决

    原文:https://www.cnblogs.com/lr393993507/p/5909804.html 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并 ...

  7. 【转】Java高并发,如何解决,什么方式解决

    原文地址:https://www.cnblogs.com/lr393993507/p/5909804.html 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了. ...

  8. java中并发Queue种类与各自API特点以及使用场景!

    一 先说下队列 队列是一种数据结构.它有两个基本操作:在队列尾部加入一个元素,和从队列头部移除一个元素(注意不要弄混队列的头部和尾部) 就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经 ...

  9. Java 多线程并发编程一览笔录

    Java 多线程并发编程一览笔录 知识体系图: 1.线程是什么? 线程是进程中独立运行的子任务. 2.创建线程的方式 方式一:将类声明为 Thread 的子类.该子类应重写 Thread 类的 run ...

随机推荐

  1. 浅谈CSRF攻击方式(转)

    引自:http://www.cnblogs.com/hyddd/一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one cli ...

  2. openssl C语言编码实现rsa加密

    非原创, 引用自: 1 CC=gcc CPPFLAGS= -I /home/yyx//openssl-1.0.1t/include/ CFLAGS=-Wall -g LIBPATH = -L /usr ...

  3. 现在的C语言编辑器里的int范围为什么是-2147483648~2147483647 2014-08-05 10:21 100人阅读 评论(0) 收藏

    下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...

  4. NGUI拖拽简介

    挂上UIDragDropItem就可以实现拖拽,按钮监听Drop消息即可实现对拖放的监听. UIDragDropItem有一个Clone On Drag选项,勾上可以克隆,但会被ScrollView遮 ...

  5. 【大话QT之十三】系统软件自己主动部署实现方案

    本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...

  6. 正常断开连接情况下,判断非阻塞模式socket连接是否断开

    摘自:http://blog.chinaunix.net/uid-15014334-id-3429627.html 在UNIX/LINUX下, 1,对于主动关闭的SOCKET, recv返回-1,而且 ...

  7. 浏览器在线打开pdf

    https://www.cnblogs.com/Leo_wl/p/5735001.html#_label0 https://blog.csdn.net/li_cheng_liang/article/d ...

  8. linux学习笔记32---命令ping和telnet

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...

  9. quartz定时任务框架之实例

    import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.util.Date; public class ...

  10. :(23, 7) in class Queen, multiple overloaded alternatives of constructor Queen define default arguments. class Queen private(val name:String,prop:Array[String],private[scala02] val age:Int = 18){