
(手机横屏看源码更方便)
引子
大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。
我:说说AQS的大致流程?
他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala……
我:AQS中除了同步队列,还有什么队列?
他:还有个Condition,Condition中有个条件队列……
我:条件队列和同步队列有什么区别?
他:条件队列balabala,然后调用LockSupport.park()进入休眠,等待被唤醒,……,balabala
咦,这时我灵感突发:LockSupport.park()和Thread.sleep()有什么区别?
他:Thread.sleep()不会释放锁资源,……,balabala
我:LockSupport.park()会释放锁资源吗?
他:会吧。(估计和Object.wait()搞混淆了)
我:会吗?会吗?会吗?
他(羞涩地低下了头):彤哥,不知道,你的文章里没写。(这段我瞎写的哈^^)
OK,今天我们就来看看LockSupport.park()到底会不会释放锁资源。
Thread.sleep()和Object.wait()的区别
首先,我们先来看看Thread.sleep()和Object.wait()的区别,这是一个烂大街的题目了,大家应该都能说上来两点。
(1)Thread.sleep()不会释放占有的锁,Object.wait()会释放占有的锁;
(2)Thread.sleep()必须传入时间,Object.wait()可传可不传

本文探讨了LockSupport.park()方法是否会释放锁资源的问题,通过对比Thread.sleep()、Object.wait()和Condition.await(),分析得出LockSupport.park()不会释放锁,而释放锁通常在Condition的await()方法中进行。
最低0.47元/天 解锁文章
811

被折叠的 条评论
为什么被折叠?



