您的位置 首页 java

java锁超强总结synchronized

1、为什么需要锁:多个线程并发访问同一个共享数据,会产生数据安全问题。

2、锁的作用:将多个线程对共享数据的并发访问转换为串行访问,即一个共享数据,一次只能被一个 线程 访问到。

3、锁( lock )可以理解为对共享数据进行保护的一个许可证,对于同一个许可证保护的共享数据来说,任何线程想要访问这些共享数据必须先要持有该许可证。一个线程只有在持有许可证的情况下才可以对该共享数据进行访问;并且一个许可证一次只能被一个线程所持有;许可证线程在结束对共享数据访问后必须释放其持有的许可证。

4、线程在获得锁之后,和释放锁之前这段时间所执行的代码称为 临界区

5、锁具有排他性,即一个锁一次只能被一个线程所持有,这种锁称为排他锁,也叫互斥锁;

6、 JVM 把锁分为内部锁和显示锁,内部锁通过 synchronized 关键字实现;显示锁通过 java .concurrent.locks.Lock接口的实现类实现的;

7、锁可以实现对共享数据的安全访问,保障线程的原子性,可见性,有序性;锁是通过互斥保障原子性,一个锁只能被一个线程持有,这就保障临界区的代码一次只能被一个线程执行;使得临界区代码所执行的操作自然而然的具有不可分割的特性,即具备了原子性;

文章来源:智云一二三科技

文章标题:java锁超强总结synchronized

文章地址:https://www.zhihuclub.com/192874.shtml

关于作者: 智云科技

热门文章

网站地图