今天面试阿里被问到一个简单的多线程问题,脑子里第一个闪现的是wait()和notify(),写代码的时候又蹦出些其它想法,结果写的时间有点长,实现也有点混乱,回来后把当时的想法整理了一下,分别比较一下实现效率。
1.synchronized + wait +notify
这个实现可以看连接https://blog.csdn.net/woainiwss/article/details/52013810
2.condition + await + signal
private static ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private static Condition condition = lock.writeLock().newCondition();
private static final void runCount(Boolean ood) throws InterruptedException {
for (int i = 0; i < 100001; i++) {
lock.writeLock().lock();
if(ood){
if(i%2==1){
//System.out.println(i);
condition.await();
continue;
}else{
condition.signal();
}
}else{