1、异步和同步的概念
同步调用:调用方在调用过程中,持续等待返回结果。
异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数。
2 、异步转为同步的概率
需要在异步调用过程中,持续阻塞至获得调用结果。
3、异步调用转同步的5种方式
1、使用wait和notify方法 (synchronized内)
2、使用条件锁 (new ReentrantLock().lock.newCondition().signal();;)
3、Future
4、使用CountDownLatch
5、使用CyclicBarrier
4、构造一个异步调用模型。
CyclicBarrier和CountDownLatch仅仅只是类似,两者还是有一定区别的。
CyclicBarrier : 可以理解为做加法,等到加到这个数字后一起运行;可以重复计数的;
注意: 如果这个数值设置得很大,比线程池中的线程数都大,就很容易引起死锁。
await()、reset();
CountDownLatch : 是减法,减到0继续运行。不可以重复计数的;
await()、countDown();