目录

1.synchronized同步锁

2.ReentrantLock重入锁

3.ReadWriteLock读写锁

4.StampedLock戳锁(目前没找到合适的名字,先这么叫吧...)

5.总结

=======正文分割线==========

为了更好的支持并发程序,JDK内部提供了多种锁。本文总结4种锁。

1.synchronized同步锁

使用

synchronized本质上就2种锁:

1.锁同步代码块

2.锁方法

可用object.wait() object.notify()来操作线程等待唤醒

原理:synchronized细节的描述传送门:jdk源码剖析三:锁Synchronized

性能和建议:JDK6之后,在并发量不是特别大的情况下,性能中等且稳定。建议新手使用。

2.ReentrantLock重入锁(Lock接口)

使用:ReentrantLock是Lock接口的实现类。Lock接口的核心方法是lock(),unlock(),tryLock()。可用Condition来操作线程:

大数据培训,云培训,数据挖掘培训,云计算培训,高端软件开发培训,项目经理培训

如上图,await()和object.wait()类似,singal()和object.notify()类似,singalAll()和object.notifyAll()类似

原理核心类AbstractQueuedSynchronizer,通过构造一个基于阻塞的CLH队列容纳所有的阻塞线程,而对该队列的操作均通过Lock-Free(CAS)操作,但对已经获得锁的线程而言,ReentrantLock实现了偏向锁的功能。

性能和建议:性能中等,建议需要手动操作线程时使用。

 

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式