关于java的synchronized关键字

synchronized最关键的就是确定锁的对象,我认为有两种,类和对象:

一、类

对类的加锁有两种方法:

1.public synchronized static void fun(){};

在静态方法前加上synchronized关键字。

2.synchronized(类名.class){};

将加锁的代码块的锁的位置,写上类对象。可以用实例对象.getClass()代替,也可以写其他类名,不一定是自己的类名。

二、实例对象

 

对实例对象的加锁也有两种方法:

1.public synchronized void fun(){};

在方法前加上synchronized关键字。

2.synchronized(对象){};

将加锁的代码块的锁的位置,写上实例对象。可以用实例对象this代替,同样,到底是什么实例对象,就随意了,不一定非要自己这个实例对象。

额外要注意的是:

如果对于实例对象的加锁没有特殊要求的话,可以使用byte[] byte = new byte[0];代替,因为这个效率高,其他的需要7条操作码,他只需3条。

三、机制

synchronized关键字是针对对象而设计的锁。每个对象只能加一次锁,一旦该对象被加锁,即触发了synchronized的方法或代码块,该对象就必须等这个锁结束(即对应的代码块或方法执行完毕)才能再次加锁。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值