zoukankan      html  css  js  c++  java
  • java阻塞主线程的实现

    1.声明计数器线程个数:
     
    CountDownLatch latch= new CountDownLatch(2);
     
    2.线程启动带参数latch:
     
    Worker worker1= new Worker("zhang san" , 5000, latch);
     
    3.线程启动,主线程阻塞:
     
    worker1.start();
    latch.await();
     
    4.线程run()方法中计数器技术开始:
     
    public void run(){ 
     System. out.println("Worker " +workerName +" do work begin at "+sdf.format( new Date())); 
     doWork(); //工作了 
     latch.countDown();//工人完成工作,计数器减一 
     
     
    5.整体代码Test:
     
     package tets;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.concurrent.CountDownLatch;
     
    public class CountDownLatchTest {
          
              final static SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ); 
              public static void main(String[] args) throws InterruptedException { 
                  CountDownLatch latch= new CountDownLatch(2);//两个工人的协作 
                  Worker worker1= new Worker("zhang san" , 5000, latch); 
                  Worker worker2= new Worker("li si" , 8000, latch); 
                  worker1.start(); // 
                  worker2.start(); // 
                  latch.await(); //等待所有工人完成工作 
                  System. out.println("all work done at " +sdf.format(new Date())+" "+Thread.currentThread().getName()); 
              } 
               
               
              static class Worker extends Thread{ 
                  String workerName;  
                   int workTime 
                  CountDownLatch latch
                  public Worker(String workerName ,int workTime ,CountDownLatch latch){ 
                       this.workerName =workerName; 
                       this.workTime =workTime; 
                       this.latch =latch; 
                  } 
                  public void run(){ 
                      System. out.println("Worker " +workerName +" do work begin at "+sdf.format( new Date())); 
                      doWork(); //工作了 
                      System. out.println("Worker " +workerName +" do work complete at "+sdf.format( new Date())); 
                       latch.countDown();//工人完成工作,计数器减一 
           
                  } 
                   
                  private void doWork(){ 
                      try 
                          Thread. sleep(workTime); 
                      } catch (InterruptedException e) { 
                          e.printStackTrace(); 
                      } 
                  } 
              } 
               
                
          } 
      
  • 相关阅读:
    上传预览图片
    css3图片3D翻转效果
    获取新浪天气api显示天气情况(转)
    matlab添加M_map工具箱(转 http://blog.sina.com.cn/s/blog_491b86bf0100srt9.html)
    Matlab read_grib.r4 安装新方法(转自:http://blog.sina.com.cn/s/blog_9f36648b010179s7.html)
    grb文件的读取
    Windows 7 防火墙对Virtualbox guest的影响
    Virtualbox修改bios信息安装Windows XP OEM
    Wordpress编辑器(Tinymce)在Chrome中动态修改图片大小
    Android流行的框架整理
  • 原文地址:https://www.cnblogs.com/beantestng/p/3772845.html
Copyright © 2011-2022 走看看