LockSupport
LockSupport是优化版的等待和唤醒机制
- wait 和 notify 需要和 synchronized 结合使用
 - await 和 signal 需要和 Lock 结合使用
 - 它们都必须是先等待再唤醒
 - LockSupport可以单独使用, 直接唤醒指定的线程,而且跟顺序无关,可以先 unpart 再park
 
底层原理
调用的是底层Unsafe类的native 方法
每个线程都最多只会有一个许可证关联,调用多次不会累加
调用一次park 会消费permit
Thread a = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(3L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "----come in ");
            LockSupport.park();
            System.out.println(Thread.currentThread().getName() + "----被唤醒");
        }, "AA");
        a.start();
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName() + "----come in ");
            LockSupport.unpark(a);
            System.out.println(Thread.currentThread().getName() + "----通知了");
        }, "BB").start();
                    
                
                
            
        
浙公网安备 33010602011771号