AQS是如何实现线程的等待和唤醒的 ?

一、AQS是如何实现线程的等待和唤醒的 ?


AQS中线程等待和唤醒主要依赖 park 和 unpark 实现的。


当一个线程尝试获取锁或者同步器时,如果获取失败,AQS会将该线程封装成一个Node并添加到CLH等待队列中,然后通过 LockSupport.park() 将该线程阻塞。


当一个线程释放锁或者同步器时,AQS会通过 LockSupport.unpark() 方法将等待队列中的第一个线程唤醒,并让其重新尝试获取锁或者同步器。

posted @ 2025-06-02 21:13  jock_javaEE  阅读(37)  评论(0)    收藏  举报