CountDownLatch 用法
在这里插入代码片
@Slf4j
public class LactchA implements Runnable{
private CountDownLatch countDownLatch;
@Override
public void run() {
try {
log.info("洗苹果");
countDownLatch.countDown();
}catch (Exception e){
}
}
public CountDownLatch getCountDownLatch() {
return countDownLatch;
}
public void setCountDownLatch(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
public LactchA(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}}
@Slf4j
public class LatchB implements Runnable{
private CountDownLatch countDownLatch;
@Override
public void run() {
try {
log.info("削皮");
countDownLatch.countDown();
}catch (Exception e){
}
}
public LatchB(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
public CountDownLatch getCountDownLatch() {
return countDownLatch;
}
public void setCountDownLatch(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
}
public static void main(String[] args) {
try {
CountDownLatch countDownLatch = new CountDownLatch(2);
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(new LactchA(countDownLatch));
executorService.submit(new LatchB(countDownLatch));
countDownLatch.await();
System.out.println("吃苹果");
}catch (Exception e){
}
}
这是CountDownLatch 的用法,但是 如何保证,一定是先洗苹果,再削皮那
package com.slp.rich.wrok.countDownLatch;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.CountDownLatch;
@Slf4j
public class LatchB implements Runnable{
private CountDownLatch countDownLatch;
@Override
public void run() {
try {
long t=countDownLatch.getCount();
if(String.valueOf(t).equals("1")){
log.info("削皮");
countDownLatch.countDown();
}
}catch (Exception e){
}
}
public LatchB(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
public CountDownLatch getCountDownLatch() {
return countDownLatch;
}
public void setCountDownLatch(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
}