`

几种等待并发线程全部完成的方法

    博客分类:
  • java
阅读更多

学习到如下几种方法:

1、对于单个的线程,可以采用Future.get()的方法,任务执行完毕后才能拿到结果。

2、对于多个线程,可以采用executor.awaitTemination()的方法,伪代码如下所示:

    for(int i = 0;i < n;i++){

           executor.execute(task(i));

    }

    executor.shutdown();

    executor.awaitTemination(Long.MAX_VALUE,TimeUnit.SECONDS);

3、可以采用闭锁,制造阀门效应,伪代码如下所示:

    #主线程执行

    CountDonwLatch done = new CountDownLatch(n);

    for(int i = 0;i < n;i++){

           executor.execute(task(i));

    }

    done.await();

   

    #多线程任务中执行

    doTask(i);

    done.countDown();

   

分享到:
评论

相关推荐

    Java多线程之并发工具类

    一、总论:在JDK中提供了几种并发工具类  1)CountDownLatch(同步倒数计数器:等待多线程(或者多步骤)完成)  2)CyclicBarrier(循环屏障:同步屏障)  3)Semaphore(信号量:控制并发进程数)  主要参考...

    基于并发服务器几种实现方法(总结)

    今天主题是实现并发服务器,实现方法有多种版本,先从简单的单进程代码实现到多进程,多线程的实现,最终引入一些高级模块来实现并发TCP服务器。 说到TCP,想起吐槽大会有个段子提到三次握手,也只有程序猿(媛)能get...

    linux系统编程之线程.zip

    结论:线程中,禁止使用exit函数,会导致进程内所有线程全部退出。 在不添加sleep控制输出顺序的情况下。pthread_create在循环中,几乎瞬间创建5个线程,但只有第1个线程有机会输出(或者第2个也有,也可能没有,...

    【多线程高并发编程】五 线程的生命周期

    通过代码更好的理解线程6种周期状态NEW(新建)RUNNABLE(就绪)TERMINATED(死亡或者完成)BLOCKED(阻塞)WAITING(等待)TIMED_WAITING(限时等待)6种状态总结后记 前言 听过前面几篇文章的阅读,我们对多线程已经有了大致的...

    Java程序设计案例教程-第8章-多线程编程.pptx

    本章的学习目标 了解进程和线程的基本概念和区别 掌握创建线程的两种方法 掌握线程同步的概念和方法 了解线程的优先级 掌握线程间通信的方法 第3页 Java程序设计案例教程-第8章-多线程编程全文共36页,当前为第3页...

    并发编程示例,涉及到AtomicXXX、CountDownLatch、线程池等

    并发编程的一些小示例 1.等待通知的几种方式,包括Object的wait/notify,Condition的await/signal 2. CountDownLatch,统一控制多线程开始和结束 3.原子操作,AtomicXXX 4.线程池

    JAVA实现Modbus RTU或Modbus TCPIP数据采集.rar

    3.java同步的几种方式:synchronized,volatile,显示锁,原子变量,线程及对象的基础同步方法。 4.所谓线程安全就是当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在...

    Java并发编程应该掌握的并发工具类,快来看看你掌握了哪些?

    在我们JDK的并发包中,提供了几个非常有用的并发工具类,比如:CountDownLatch 闭锁、CyclicBarrier 同步屏障、Semaphore 信号量,在线程之间交换数据的一种方式 Exchanger,赶紧操练起来。 2、CountDownLatch 闭锁 ...

    计算机操作系统作业二.doc

    一个进程释放一种资源将有可能导致一个或几个进程___D___。 A.由就绪变运行 B.由运行变就绪 C.由阻塞变运行 D.由阻塞变就绪 20.进程控制块PCB不包括的内容就是___D___。 A.CPU现场 B.进程优先级 C.进程运行状态 D....

    go-advance-concurrency:收集了在Go中应用并发的最佳实践和经验教训

    发生死锁的条件有几种,称为“科夫曼条件”。 互斥:并发进程在任何时候都拥有对资源的专有权等待条件:并发进程必须同时拥有一个资源并正在等待其他资源无抢占:并发进程拥有的资源只能由该进程释放,因此它满足...

    Distributed-System-Design-Tutorials:分布式系统领域的各种应用

    线程有几种有用的方法,例如Thread.stop和Thread.start。 Thread.sleep强制线程等待特定的时间。 中断用于通知线程它们必须停止并执行其他操作。 为了保持数据的完整性,有时我们必须同步线程中的方法。 可以像在...

    iOSSharing:有关iOS的知识点

    2,isa指针有几种类型么? 3,分类的方法具体是在什么时候添加到类的方法列表中? 4,class_addMethod()都需要什么参数? 5,iOS消息转发流程 1,atomic关键字内部使用的是什么锁? 2,串行同步,串行异步,并发...

    net学习笔记及其他代码应用

    6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? ...

    java线程池概念.txt

    workQueue:一个阻塞队列,用来存储等待执行的任务,这个参数的选择也很重要,会对线程池的运行过程产生重大影响,一般来说,这里的阻塞队列有以下几种选择   ArrayBlockingQueue;  LinkedBlockingQueue;  ...

    C/C++笔试题(附答案,华为面试题系列)

    2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。 3.多CPU系统中,使用线程提高CPU利用率 4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独 立的运行部分,...

    内蒙古工业大学 计算机网络试题A(含答案)

    6、下列几种关于进程的叙述,( A )最不符合操作系统对进程的理解? A.进程是在多程序并行环境中的完整的程序。 B.进程可以由程序、数据和进程控制块描述。 C.线程是一种特殊的进程。 D.进程是程序在一个数据集合上...

    java面试常见基础(深层次,高级研发)

    5.2. 下面我们来看一下几种垃圾收集算法 18 5.2.1. 在JDK1.2之前,使用的是引用计数器算法, 18 5.2.2. 根搜索算法 19 5.2.3. 引用的分类 19 5.3. 方法区也是会被回收的 20 5.4. 下面我们来逐一介绍一下每个垃圾回收...

    hexagen:O过时的哈克! 不使用! :warning:[以前。 。 。 “真正的Swift协程,以及一些到目前为止您无法在Swift中实现的熟悉的并发抽象。”]

    六元Swift的真正协程,以及在它们之上构建的几种熟悉的并发结构。特征在大多数情况下,样板很少。 (通过Swift的类型推断在很大程度上得以实现。) 简单的单向和双向生成器函数,例如Python,C#,ECMAscript 6等: ...

    java面试题

    多线程几种实现方法,同步? 答:多线程有两种实现方法,一种是继承Thread类或者实现Runnable接口。同步就是在方法返回类型后面加上synchronized。 c#中的委托,事件是不是委托? 答:委托就是将方法作为一个参数...

    一个进程池的服务器程序

    子进程没完成一个请求,父进程把请求数减1;当父进程发现请求数 &gt;= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子...

Global site tag (gtag.js) - Google Analytics