# 当前线程阻塞

package com.mrzhang.javalearn.bingfa.demo_03;

/**
 * wait、notify、notifyAll使用(四)
 * <p>
 * wait方法是让当前线程阻塞,而不是什么父线程或者子线程
 *
 * @author 91MrZhang on 2020/7/31
 */
public class WaitOrNotifyDemo04 {

    private final Object lock = new Object();

    public boolean insideWait = true;


    public void m() {
        synchronized (lock) {
            System.out.println("放弃锁");
            try {
                lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("重新获得锁,执行完成");
        }
    }


    public static void main(String[] args) {
        //下面这两段执行的结果就不一样,所以要区分什么是当前线程
        WaitOrNotifyDemo04 wnd04 = new WaitOrNotifyDemo04();
        // type1
        //new Thread(wnd04::m, "线程1号").start();
        //System.out.println("main线程可以向下执行");

        // type2
        synchronized (wnd04.lock) {
            try {
                wnd04.lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("main线程可以向下执行");
    }
}