情景介绍:
之前项目中做支付时,用到了多线程方法,线程A是项目的业务线程,在某一点进行流程走完以后,进行支付时,会开启
另外一个线程B,支付以后调用的是支付接口进行支付,我们做过支付的是一般知道微信与支付宝在支付时,会回调咱们一个接口,在这里使用CountDownLatch是想等这两个线程AB都有了结果,线程A流程走完,线程B支付成功,然后我再进行下一步的操作,生成成功的标识图,然后前端展示,下面通过一个小demo,来模拟此场景:
package com.zcw.demo2;
import java.util.concurrent.CountDownLatch;
/**
* @ClassName : MyThread
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-17 13:44
*/
public class MyThread extends Thread {
private CountDownLatch maxRuner;
public MyThread(CountDownLatch maxRuner){
super();
this.maxRuner = maxRuner;
}
@Override
public void run(){
try {
Thread.sleep(2000);
maxRuner.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
CountDownLatch maxRuner = new CountDownLatch(10);
MyThread[] tArray = new MyThread[Integer.parseInt(""+maxRuner.getCount())];
for(int i =0;i<tArray.length;i++){
tArray[i] = new MyThread(maxRuner);
tArray[i].setName("线程" +(i+1));
tArray[i].start();
}
maxRuner.await();
System.out.println("都回来了!");
}
}
运行结果:
悟: