zoukankan      html  css  js  c++  java
  • 线程交互

    1. import java.util.concurrent.CountDownLatch;  
    2.   
    3. public class LatchDriverDemo {  
    4.    private static final  int N = 5;  
    5.    public static void main(String[] args) throws InterruptedException {  
    6.     // 用于向工作线程发送启动信号  
    7.        CountDownLatch startSignal = new CountDownLatch(1);  
    8.     // 用于等待工作线程的结束信号 CountDownLatch  
    9.        CountDownLatch doneSignal = new CountDownLatch(N);  
    10.        for (int i = 0; i < N; i++)   
    11.         // 创建启动线程  
    12.         new Thread(new LatchWorker(startSignal,doneSignal),"t"+i).start();  
    13.         // 得到线程开始工作的时间  
    14.         long start = System.currentTimeMillis();  
    15.         //主线程,递减开始计数,让所有线程开始工作  
    16.         startSignal.countDown();  
    17.         //主线程开始阻塞,等待其他线程完成  
    18.         startSignal.await();  
    19.         long end = System.currentTimeMillis();  
    20.           
    21.         //System.out.println("All Work Take Time : "+ (end - start)/1000.0+"s" );  
    22.         System.out.println(end+"   "+start);  
    23.    }  
    24. }  
    25.   
    26. import java.util.concurrent.CountDownLatch;  
    27.   
    28. public class LatchWorker implements Runnable{  
    29.     private final CountDownLatch startSignal;  
    30.     private final CountDownLatch doneSignal;  
    31.     public LatchWorker(CountDownLatch startSignal,CountDownLatch doneSignal){  
    32.         super();  
    33.         this.startSignal = startSignal;  
    34.         this.doneSignal = doneSignal;  
    35.     }  
    36.     @Override  
    37.     public void run() {  
    38.          try {  
    39.             startSignal.await();  
    40.             dowork();  
    41.             doneSignal.countDown();  
    42.         } catch (InterruptedException e) {  
    43.             e.printStackTrace();  
    44.         }  
    45.           
    46.     }  
    47.     private void dowork() {  
    48.         // TODO Auto-generated method stub  
    49.         int a = 0 ;  
    50.         for (int i = 0; i < 10000; i++) {  
    51.             a += 1;  
    52.         }  
    53.         System.out.println(Thread.currentThread().getName()+"="+a);  
    54.     }  
    55.      
    56. }  
  • 相关阅读:
    js 数组操作常用方法
    如何成为一名卓越的前端工程师
    js实现日期显示的一些操作
    JavaScript 创建对象的七种方式
    ios微信浏览器音乐自动播放
    Mac下新建.开头的隐藏文件
    JavaScript判断浏览器UA 、 添加收藏 、设置首页 、调用本地邮箱发送邮件
    获取当前页面参数Hash和Search,或者当前Script的参数
    AJAX调用代码实例
    移动端兼容笔记整理
  • 原文地址:https://www.cnblogs.com/hold/p/3097083.html
Copyright © 2011-2022 走看看