`

JAVA并发应用程序的构件(二)

    博客分类:
  • JAVA
 
阅读更多

三、锁存器(闭锁)

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

主要方法

 public CountDownLatch(int count);

 public void countDown();

 public void await() throws InterruptedException
 

构造方法参数指定了计数的次数

countDown方法,当前线程调用此方法,则计数减一

awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

 

  1. public class CountDownLatchDemo {  
  2.     final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  3.     public static void main(String[] args) throws InterruptedException {  
  4.         CountDownLatch latch=new CountDownLatch(2);//两个工人的协作  
  5.         Worker worker1=new Worker("zhang san"5000, latch);  
  6.         Worker worker2=new Worker("li si"8000, latch);  
  7.         worker1.start();//  
  8.         worker2.start();//  
  9.         latch.await();//等待所有工人完成工作  
  10.         System.out.println("all work done at "+sdf.format(new Date()));  
  11.     }  
  12.       
  13.       
  14.     static class Worker extends Thread{  
  15.         String workerName;   
  16.         int workTime;  
  17.         CountDownLatch latch;  
  18.         public Worker(String workerName ,int workTime ,CountDownLatch latch){  
  19.              this.workerName=workerName;  
  20.              this.workTime=workTime;  
  21.              this.latch=latch;  
  22.         }  
  23.         public void run(){  
  24.             System.out.println("Worker "+workerName+" do work begin at "+sdf.format(new Date()));  
  25.             doWork();//工作了  
  26.             System.out.println("Worker "+workerName+" do work complete at "+sdf.format(new Date()));  
  27.             latch.countDown();//工人完成工作,计数器减一  
  28.   
  29.         }  
  30.           
  31.         private void doWork(){  
  32.             try {  
  33.                 Thread.sleep(workTime);  
  34.             } catch (InterruptedException e) {  
  35.                 e.printStackTrace();  
  36.             }  
  37.         }  
  38.     }  
  39.       
  40.        
  41. }  

 

分享到:
评论

相关推荐

    用 j2Ee 和 Uml 开发 Java 企业级应用程序

    Java 企业级应用程序开发是构建大规模、高可用性、分布式系统的关键技术,而J2EE(Java 2 Platform, Enterprise Edition)和UML(统一建模语言)则是这个领域中的两个核心工具。J2EE是Java平台的一个版本,专注于...

    基于Java的分布式计算构件库设计与实现.zip

    它使得开发者可以创建分布式应用程序,其中的对象可以在远程机器上被调用,就像它们在本地一样。 3. **Java JMS** JMS是Java平台的标准接口,用于发送和接收消息。在分布式环境中,JMS提供了一种可靠的消息传递...

    《软件构件与中间件技术》电子教案

    2. **Java Servlets和JavaServer Pages(JSP):** 这些技术用于构建动态网页和Web应用程序,Servlets处理服务器端逻辑,而JSP则负责呈现逻辑。 3. **Java Persistence API(JPA):** JPA是一种用于管理持久化对象...

    90个java-swing基础例子.zip

    Java Swing 是Java GUI(图形用户界面)库的一部分,主要用于创建桌面应用程序。它是Java Foundation Classes (JFC) 的一部分,提供了一套丰富的组件和接口,帮助开发者构建美观且功能丰富的交互式用户界面。在这个...

    构件模型及构件管理库的研究与实现

    在IT行业中,构件模型(Component Model)是一种软件开发方法,它允许开发者将应用程序分解为可重用的、独立的功能单元,这些单元被称为构件。构件模型促进了软件的模块化,提高了开发效率,降低了维护成本,同时也...

    JAVA做的进程并发.pdf

    这份文档讨论了使用Java进行进程并发编程的具体案例。文档中通过实现一个计数器应用展示了如何创建线程和...整体上,本文档通过实例展示了如何在Java中实现简单的多线程并发程序,并结合Swing库创建了简单的图形界面。

    java线程初解

    我们还将研究更复杂的、使用程的应用程序的基本构件 — 如何在线程之间交换数据、如何控制 程以及线程如何互相通信。 我应该学习这个教程吗? 本教程适用于拥有丰富Java 语言应用知识,但又没有多少多线程或并发性...

    OMG、Sun和Microsoft 的三种软件构件标准.docx

    CORBA Component Model (CCM)是CORBA的进一步扩展,它在支持POA(Portable Object Adapter)的CORBA规范基础上,结合了EJB(Enterprise JavaBeans)的特性,主要用于开发和配置分布式应用程序的服务器端构件模型。...

    java线程学习

    我们还将研究更复杂的、使用程的应用程序的基本构件 — 如何在线程之间交换数据、如何控制 程以及线程如何互相通信。 我应该学习这个教程吗? 本教程适用于拥有丰富Java 语言应用知识,但又没有多少多线程或并发性...

    Thingking In Java 第四版 英文版

    异常处理是Java中处理程序运行时错误的重要机制,书中详细解释了如何使用异常来构建健壮的应用程序。集合框架则为Java程序员提供了存储和操作对象集合的标准方法。作者还解释了如何通过I/O流在程序和外部世界之间...

    java竞赛题集锦

    总之,从这个文件中我们学习到了Java语言的基础知识、高级特性和最佳实践,这些都是构建高效、健壮的Java应用程序所必需的。通过理解和掌握这些知识点,参赛者或开发者能够在Java编程竞赛中取得更好的成绩,同时也...

    java试题及答案

    Applet是Java的小应用程序,可以在浏览器中运行。它可以读取客户端的部分系统变量,但不能读取或创建客户端文件。因此,选项D是正确的描述。 在Java GUI中,JFrame是顶级容器,JButton和JPanel是组件,而JApplet是...

    JAVA线程简介(多线程)

    本教程研究了线程的基础知识 — 线程是什么、线程为什么有用以及怎么开始编写... <br>我们还将研究更复杂的、使用线程的应用程序的基本构件 — 如何在线程之间交换数据、如何控制线程以及线程如何互相通信。

    全国计算机等级考试JAVA复习题库二.pdf

    11. Java并发管理:d. 多线程,Java提供了内置的多线程机制来支持并发编程。 12. Java语言特性:a. 错误,Java的内存管理由垃圾收集器自动进行。 13. Java移动平台:a. J2ME,专门为嵌入式设备和移动设备设计的...

    java考试真题 java考试真题

    Java程序的并发机制** - Java的并发机制主要通过**多线程**来实现。每个线程都有自己的执行路径,可以在同一时刻执行不同的任务。 **13. 当前对象自身引用的关键字** - 在Java中,关键字**this**用于表示当前对象...

    基于.net外文翻译本科学位论文.doc

    论文的主要内容包括:构件基于企业应用程序开发的自动动态配置、基于J2EE的分布式环境下的应用、vertical partitioning的应用、wide-area vertical layering的实现、应用组件的复制和一致性维护、动态部署新的请求...

    电子商务系统构件模型

    在这个电子商务系统中,Struts 2作为前端控制器,协调各个组件的工作,确保应用程序的响应速度和用户体验。 其次,Spring 2.5.6作为一个全面的轻量级应用框架,为依赖注入(DI)、面向切面编程(AOP)以及事务管理...

Global site tag (gtag.js) - Google Analytics