wait and notify
这篇文章的目的是为了我以后想起wait和notify的时候记起来还有这个模型,用惯了信号量?CountdownLatch?Atomicxxx?别忘了你还有wait and notify糟糠之妻不下堂。
写这个文章的目的就是两个线程之间wait and notify最简单的模型,线程1阻塞(加锁),线程2 先sleep 3秒以后,线程2唤醒(释放锁)
多线程最简单的理解就是理解为两个代码块,一个thread1包围的部分,一个thread2包围的部分,所有行可以跳着顺序执行,比如说thread1中(除try catch)第一行obj.wait();可能比第二个thread2第一行Thread.sleep()先执行。为了让其按照我们想要指定的思路(正确的前提下),我们可以通过一些方法(强制)让其按照我们的规范来执行,这就是多线程应用到Java。
public class NotifyDemo {
public static void main(String[] args) {
Object obj=new Object();
Thread thread1= new Thread(() -> {
synchronized (obj) {
try {
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Thread thread2= new Thread(() -> {
synchronized (obj) {
try {
Thread.sleep(3000);
obj.notify();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread1.start();
thread2.start();
}
}