이 글에서는 주로 멀티 스레드 동기화를 위한 Java의 CountDownLatch에 대한 자세한 설명과 예제 코드를 소개합니다. 도움이 필요한 친구들은
Java의 CountDownLatch에 의한 멀티 스레드 동기화에 대한 자세한 설명
CountDownLatch 소개
동기화 키워드입니다. 2. 잠금 잠금
인터페이스 및 해당 구현 클래스 ReentrantLock 및 ReadWriteLock 잠금은 동기화를 달성합니다. 3. 세마포어는 동기화를 구현합니다.
CountDownLatch 구현 원칙 소개:
CountDownLatch 사용법:
public class VideoConference implements Runnable{ private final CountDownLatch countDownLatch; private int number; public VideoConference(int number) { this.number = number; this.countDownLatch = new CountDownLatch(number);//使用Number初始化其内部的计数器,当初始化完成后,不能再次初始化 } public void arrive(String name){ //每个需要同步的任务,在任务完成时,需要调用该方法 countDownLatch.countDown();//countDownLatch内部的计数器减1 System.out.print("arrive:"+name+"\n"); try{ countDownLatch.await();//await方法是线程进入休眠,当countDownLatch计数器为0时,将被唤醒 //线程被唤醒,在这里可以执行一系列任务 System.out.print("name:"+name + " say:let's start..." +"\n"); }catch (InterruptedException e){ e.printStackTrace(); } } public void run(){ System.out.print("has arrive:"+(number-countDownLatch.getCount())+"\n"); try{ countDownLatch.await();//await方法是线程进入休眠,当countDownLatch计数器为0时,将被唤醒 //线程被唤醒,在这里可以执行一系列任务 System.out.print("all arrived:"+(number-countDownLatch.getCount())+"\n"); }catch (InterruptedException e){ e.printStackTrace(); } } }
public class Participant implements Runnable{ private VideoConference videoConference; private String name; public Participant(String name, VideoConference videoConference) { this.name = name; this.videoConference = videoConference; } public void run(){ try { //do something Thread.sleep(50); // videoConference.arrive(name); }catch (InterruptedException e){ e.printStackTrace(); } } public static void main(String[] args){ VideoConference videoConference = new VideoConference(10); Thread videoThread = new Thread(videoConference); videoThread.start(); for(int i=0; i<10; i++){ Thread thread = new Thread(new Participant("participant:"+i,videoConference)); thread.start(); } } }
참가자 클래스의 기능 먼저 10명의 참가자가 필요한 회의를 생성한 다음 10명의 참가자를 생성하고 한 명씩 로그인합니다. 10명의 참가자가 모두 로그인하면 각 참가자와 호스트가 "깨어나고" 발언합니다.
요약:
위 내용은 Java의 다중 스레드 동기화를 위한 CountDownLatch의 예제 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!