标签:sync 作用 syn 轻量级 获得 自旋 java 同步方法 monitor
一 .概述
在前面,我们说到了java提供了synchronized关键词帮助我们实现一个可重入的独占锁的概念.
本节,我们讨论这个关键词的使用.
二 .使用方式
synchronized关键词可以出现在三个地方
[1]静态方法上
[2]实例方法上
[3]同步代码块上
从本质上说,我们其实没有必要分得那么的细,因为原理都是一致的.
该关键词的作用就是提供了一个阻塞队列的概念:
一个线程获取的monitor,就会获得可以资源的独享权利,当其它线程试图获取该monitor的时候,就会进入到该monitor的阻塞队列之中,直到拥有该monitor的线程释放所有权.
三 . synchronized关键词的核心 --- monitor
在java之中,所有的对象都可以作为monitor,也就是说,在java之中实现一个独占的概念非常的容易.
从上面的分析,我们可以知道,monitor就是一个锁的概念,只是这个锁是重量级的锁.
一旦一个线程获取,如果不释放,其它的线程就会被阻塞,直到monitor被释放.
正是这个原因,synchronized关键词的性能可能不是很好.
四 .改进
在java6之后,synchronized关键词进行了改进,出现了自旋锁和轻量级锁的概念,其核心就是synchronized关键词实现的锁的力度会有一个升级的概念.
在这里我们不去说这些细枝末节的概念.
五 .死锁等问题
如果多个线程由于同步方法使用不当,就可能出现死锁的概念.这是线程们都无法继续执行的一个状态.
如果出现了死锁的现象,我们可以使用jconsole来查看和解决死锁的问题.
标签:sync 作用 syn 轻量级 获得 自旋 java 同步方法 monitor
原文地址:https://www.cnblogs.com/trekxu/p/9514362.html