【并发编程】LockSupport类

相关文章

  1. 官网文档:https://www.apiref.com/java11-zh/java.base/java/util/concurrent/locks/LockSupport.html

1. 前置知识

1.1 为什么要使用LockSupport?

 3种让线程等待唤醒的方法:

  1. 使用Object中的wait()方法让线程等待,使用Object中的notify方法唤醒线程
  2. 使用JUC包中Condition的await()方法让线程等待,使用signal()方法唤醒线程
  3. LockSupport类可以阻塞当前线程以及唤醒指定被阻塞的线程

1.2 Object类中wait( )和notify( )实现线程的等待唤醒

  1. wait和notify方法必须要在同步块或同步方法里且成对出现使用。 wait和notify方法两个都去掉同步代码块后看运行效果出现异常情况:
    Exception in thread “A” Exception in thread “B”
    java.lang.IllegalMonitorStateException
  2. 先wait后notify才可以(如果先notify后wait会出现另一个线程一直处于等待状态)
  3. synchronized是关键字属于JVM层面。monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖monitor对象只能在同步块或方法中才能调用wait/notify等方法)
 
 

你可能感兴趣的:(并发编程,java)