Java中锁的分类

来源:互联网 发布:extend python 编辑:程序博客网 时间:2024/05/17 23:10
 1.内部锁
就是对象本身,每个Java对象都可以隐式地扮演一个用于同步的锁的角色;这些内置的锁被称

为内部锁(intrinsic locks)或监视器锁(monitorlocks)。执行线程进入synchronized块之前会

自动获得锁;而无论通过正常控制路径退出,还是从块中抛出异常,线程都在放弃对

synchronized块的控制时自动释放锁。获得内部锁的唯一途径是:进入这个内部锁保护的同步

块或方法。内部锁在Java中扮演了互斥锁(mutual exclusion lock,也称mutex)的角色,意味着

至多只有一个线程可以拥有锁,当线程A尝试请求一个被线程B占有的锁时,线程A必须等待或者

阻塞,直到B释放它。如果B永远不释放锁,A将永远等下去。同一时间,只能有一个线程可以运

行特定保护的代码块,因此,由同一个锁保护的synchronized块会各自原子地执行,不会相互

干扰。在并发的上下文中,原子性的含义不慌不忙 它在事务应用中相同---一组语句

(statements)作为单独的,不可分隔的单元运行。执行synchronized块的线程,不可能看到会

有其他线程能同时执行同一个锁保护的synchronized块。


2.Java中的私有锁对象
eg:
private Object lock = new Object();
public void foo(){
    synchronized(lock){
      ......
 }
}
使用私有锁对象,而不是对象的内部锁(或任何其它可公共访问的锁),有很多好处,私有的锁

对象可以封装锁,这样客户端代码无法得到它。然而可公共访问的锁允许客户端涉足它的同步

策略----正确或不正确地。客户端不正确地得到另一个对象的锁,会引起活跃度方面的问

题。

 

 

3.其它锁

我们还可针对代表某种共享资源的对象加锁。比如一些集合类等待。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 店铺扣2分宝贝降权了怎么办 淘宝店没订单没流量怎么办啊 淘宝id账号登录密码忘记了怎么办 淘宝网店铺授权客服联系不上怎么办 卖家发货买家查不到物流信息怎么办 物流信息到了但东西没到怎么办 淘宝详情已更改对方恶意投诉怎么办 淘宝店写的不给退换怎么办 从饿了么商家借款逾期怎么办 谷歌浏览器网页无法复制文字怎么办 复制粘贴在文件本里找不到了怎么办 淘宝商家给我寄错东西怎么办 美团客户点餐商家没有了怎么办 如果银行卡里的钱突然没有了怎么办 微信绑定的银行卡怎么没有了怎么办 西亚超市商品退货赠品不退怎么办 淘宝发布宝贝推荐橱窗位不够怎么办 抖音和微信软件冲突怎么办 淘宝开过店想给别家做客服怎么办 学网上开店别人不主动教你怎么办 淘宝店铺身份信息复核逾期了怎么办 一件代发进货后如果没卖出去怎么办 国外供货商收了钱不发货怎么办 企业被注销之后淘宝企业店怎么办 在淘宝上买了东西店家关门了怎么办 在淘宝上买东西被店家骂了怎么办 淘宝店家错发了两次货怎么办 我的身份证注销了淘宝支付宝怎么办 买了空调坏了店家不管怎么办 支付宝充话费没到账也不退款怎么办 淘宝上店家关铺无法赔偿怎么办 未发货申请退款卖家拒绝怎么办 淘宝订单未发货买家恶意退款怎么办 淘宝被限制购买还有没退款的怎么办 复制粘贴了打字在复制下页怎么办? 得了抑郁症没办法还贷款了怎么办 淘宝东西退了商家不退钱怎么办 京东买东西付款后显示未付款怎么办 不能吃小龙虾的人吃了怎么办 闲鱼退货卖家收到货不退款怎么办 没收到货申请退款卖家不同意怎么办