您好,欢迎访问一九零五行业门户网

实现Java多线程协作作业中的信号同步,可以采用以下方法:

一、信号同步多线程很多时候是协作作业。比如4个线程对电商数据分季度统计,统计完成之后,再汇总。如何知道4个线程都执行完成呢,我们可以使用jdk1.5给我们提供的辅助类countdownlatch(
减少计数)、cyclicbarrier(循环栅栏)、semaphore(信号灯)。
二、基于时间维度1、countdownlatch多少个协作线程就初始化countdownlatch的构造参数是多少。
public static void main(string[] args) throws interruptedexception { final int num=6; //定义总数量; countdownlatch countdownlatch=new countdownlatch(num); for (int i = 0; i < num; i++) { new thread(()->{ system.out.println(thread.currentthread().getname()+"线程,已执行!"); //减少计数 countdownlatch.countdown(); },string.valueof(i+1)).start(); } //等待所有任务完成 countdownlatch.await(); system.out.println("所有线程任务已经执行完成!"); }
2、cyclicbarrier与减少计数类似
public static void main(string[] args) { final int num = 6; //定义循环数量及循环完成后的任务(runnable接口实现); cyclicbarrier cyclicbarrier = new cyclicbarrier(num, () -> { system.out.println("所有线程任务已经执行完成!"); }); for (int i = 0; i < num; i++) { new thread(()->{ system.out.println(thread.currentthread().getname()+"线程,已执行!"); try { //等待点或障碍点,等待所有任务完成, cyclicbarrier.await(); } catch (interruptedexception e) { e.printstacktrace(); } catch (brokenbarrierexception e) { e.printstacktrace(); } },string.valueof(i+1)).start(); } }
三、基于信号维度semaphore,线程与信号是m:n,其中m>=n。
import java.util.random;import java.util.concurrent.semaphore;import java.util.concurrent.timeunit;/*信号灯* 6个线程,抢占三个信号* */public class semaphoredemo { public static void main(string[] args) { semaphore semaphore=new semaphore(3); for (int i = 0; i < 6; i++) { new thread(()->{ try { //获取信号 semaphore.acquire(); system.out.println("线程:"+thread.currentthread().getname()+"----获取信号"); int time = new random().nextint(5); system.out.println(("线程:"+thread.currentthread().getname()+"----休眠"+time+"s!")); timeunit.seconds.sleep(time); } catch (interruptedexception e) { e.printstacktrace(); }finally { // 释放信号 system.out.println("线程:"+thread.currentthread().getname()+"---释放信号"); semaphore.release(); } },string.valueof(i+1)).start(); } }}
首先线程4、1、3获取到信号,线程1释放信号后,线程2获得信号。线程2、3释放信号后,线程5、6获得信号。
以上就是实现java多线程协作作业中的信号同步,可以采用以下方法:的详细内容。
其它类似信息

推荐信息