• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Java-多线程并发之锁原理

开发技术 开发技术 2周前 (04-07) 5次浏览

LockSupport工具类:

主要用于挂起和唤醒线程,是创建锁和其他同步类的基础。

每个使用LockSupport的线程会和他关联一个许可证。

主要功能由Unsafe类实现:

1.park():如果已经拿到了许可证,就返回。没有拿到就阻塞。不会抛异常。

2.unpark(Thread thread):1) 无条件下调用,如果传入的线程没有许可证,就给许可证。  2) 如果线程调用了park被挂起就被唤醒。 

              最好对park进行判断,因为这个方法不会抛异常。也不会告诉你为什么park被返回了。

3.parkNanos(long nanos):与park类似。 拿到许可证就返回,如果没有拿到就在nanos时间后自动返回。

4.park(Object blocker):当调用park被挂起时会记录到线程内部。用诊断工具getBlock(Thread),可以把block设置成this。就可以获取有关阻塞的信息。

Java-多线程并发之锁原理

 

 Thread类里边有个变量  volatile Object  parkBlocker.  就是用来存放blocker对象的

5.parkNanos(Object blocker,long nanos)

相比park(Object blocker)多了一个超时的时间

6.parkUntil(Object blocker,long deadline) 这个deadline是一个随机的时间。

 

抽象同步队列AQS:AbstractQueueSynchronizer,同步器的基础组件。

 


程序员灯塔
转载请注明原文链接:Java-多线程并发之锁原理
喜欢 (0)