import java.util.concurrent.CountDownLatch;
/**
* @Description 两个线程循环打印A1B2C3。。。Z26 countDownLatch保证线程顺序
*/
public class waitNotifyDemo1 {
private static Object lock = new Object();
private static CountDownLatch countDownLatch = new CountDownLatch(1);
public static void main(String[] args) {
// 字母 65-91 对应 A-Z
new Thread(() -> {
countDownLatch.countDown();
synchronized (lock) {
for (int i = 65; i < 91; i++) {
System.out.print((char) i);
// notify不释放锁
lock.notify();
// 通过wait释放锁
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 确保最后执行的线程释放掉锁
lock.notify();
}
}).start();
// 数字
new Thread(() -> {
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
for (int i = 1; i < 27; i++) {
System.out.print(i);
// notify不释放锁
lock.notify();
try {
// 通过wait释放锁
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 确保最后执行的线程释放掉锁
lock.notify();
}
}).start();
}
}
【多线程面试题】要求用两个线程,一个线程打印A-Z,一个线程打印1-26,顺序打印A1B2C3....Z26(wait、notify加countDownLatch解法)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 题目 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z。...
- package JUC; import java.util.concurrent.locks.Condition;...
- 1.一个容器,两个线程,程一往线程加东西。程二等待,等加到5个时阻塞成一, 2.两个消费线程,十个生产线程,容器里...