码迷,mamicode.com
首页 > 编程语言 > 详细

java阻塞主线程的实现

时间:2014-06-11 10:51:20      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   class   java   tar   ext   color   

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

java阻塞主线程的实现,布布扣,bubuko.com

java阻塞主线程的实现

标签:style   class   java   tar   ext   color   

原文地址:http://www.cnblogs.com/beantestng/p/3772845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!