按照abcabcabc方式打印十次
先从两个线程打印ababab入手,可以通过synchronize+wait/notify的方式实现
private static void printWith2Threads() throws InterruptedException {
Object lock = new Object();
//两个线程打印ab 只需要一把锁即可 wait方法会释放当前锁并进入阻塞等待状态
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10; i++) {
synchronized (lock) {
System.out.print("a");
// 唤醒另一个线程 并使其进入等待状态 准备争抢锁
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, "thread1");
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 10; i++) {
synchronized (lock) {
System.out.