并发

锁:方法锁、对象锁、类锁
1.方法锁(synchronized修饰方法时):synchronized放在方法和在方法内synchronize(this)是等价的。都仅仅能锁住当前对象。
2.对象锁(synchronized修饰方法或代码块)
调用此对象的同步方法或进入同步代码区域,需要先获得对象锁;若对象锁被占用需等待锁释放;java对象都有一个对象锁,由jvm自动获取和释放;synchronized方法正常返回或者抛异常而终止,jvm会自动释放对象锁。

对象锁的两种方式
image

image

3.由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只有一份。所以,一旦一个静态的方法被声明为synchronized。此类所有的实例对象在调用此方法,共用同一把锁,我们称之为类锁。

***不是同一个对象,则不会产生相互排斥
对象锁是用来控制实例方法之间的同步,而类锁是用来控制静态方法(或者静态变量互斥体)之间的同步的。

同步和异步
同步:顺序执行,调用方法等待系统返回结果,出于阻塞状态;
异步:不用阻塞等待;委托异步任务单独完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容