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(); 
                      } 
                  } 
              } 
               
                
          } 
      
  • 相关阅读:
    (转)LINUX CENTOS7下安装PYTHON
    (转)python的paramiko模块
    (转)Db2数据库一次生产故障详细记录---数据库坏页
    (转)性能调优和问题诊断最佳实践,第 1 部分
    (转)性能调优和问题诊断最佳实践,第 2 部分
    字符串
    html框架
    数组
    生成伪随机数
    控制语句和循环
  • 原文地址:https://www.cnblogs.com/beantestng/p/3772845.html
Copyright © 2011-2022 走看看