synchornized关键字的理解

synchronized实现了管程的机制,所谓管程,在《现代操作系统》p66~p68有介绍:

管程是一种高级同步原语。管程中包括过程、变量即数据结构。

你可以访问它的过程,但是不能在管程以外的过程中访问他的数据结构。(可以认为这些数据结构是private的)

它由一个主要特征:当一个进程调用管程过程时,该过程的前几条指令将检查在管程中是否有其他进程,如果有,调用进程阻塞,如果没有,调用进程进入管程。

所以我们只需将所有的临界区转换成管程即可,让编译器来完成互斥。

java语言支持管程,就是用synchronized关键字。

只要将关键字加入到方法声明中,java保证一旦某个线程执行该方法,就不允许其他线程执行该类中的任何synchronized方法。

synchornized(Object){/**.....*/}是控制程序块的互斥访问,访问花括号里程序片段的线程必须先要获得参数中的Object对象,并对其加锁,所以其他线程要访问程序段时,就要等Object对象出于未被锁定状态才能获得它并访问临界区(共享的代码片段)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值