最简单的使用信号量吧,Semephore 就可以了,wait, notify 也可以的,你可能不理解这两个方法。notify 调用后并不会释放锁,需要等到 wait 或者 sychronized 结束。下面这段代码就能实现互相等待,输出结果是“1 one 2 two 3 three”
```java
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@
SpringBootApplication@
Slf4jpublic class DemoApplication implements CommandLineRunner {
Object lock = new Object();
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@
Override public void run(String... args) throws Exception {
System.out.println("1");
new Thread(() -> stop()).start();
pause();
System.out.println("2");
pause();
System.out.println("3");
pause();
}
public void stop() {
System.out.println("one");
pause();
System.out.println("two");
pause();
System.out.println("three");
}
public void pause() {
try {
synchronized (lock) {
lock.notifyAll();
lock.wait();
}
}catch (Exception e) {
}
}
}
```