java锁定类对象_Java中类锁定和对象锁定的区别

人们讲述了两种类型的多线程锁定 – 对象和类.据我所知,锁定仅在对象上完成.

案例1:我们使用新方法或工厂方法等创建的对象.

void synchronized myMethod(Type param) {

//will lock on the instance used to call this method

}

要么

synchronized(this) {

//will lock on current object

}

要么

synchronized(obj1) {

//will lock on specified obj1 object

}

案例2:关于java.lang.Class对象

这称为类锁,可以与静态字段或方法或块一起使用,因为它们属于类并在所有对象和其他类属性之间共享.

static void synchronized method() {

//will lock the Class object

}

要么

static {

synchronized(SomeClass.class){

int a = 2;

}

}

>为什么我将此视为对象锁定,因为类被加载到JVM中的方法区域,并且类的所有静态属性都包装在由JVM创建的java.lang.Class对象中.因此,在抽象,对象锁定和图片中,我们看到了类锁定.

>所以我还可以推断一件事.正如一个线程锁定的对象不能被另一个线程获取,只要它没有被第一个线程释放,类锁定(java.lang.Class实例)也以相同的方式工作.

>我想知道在同步静态方法的情况下,在以下两种情况下锁定线程获取哪个类:

>此方法在定义它的同一个类中调用.

>从具有派生类名的派生类调用此方法.

到目前为止,这是我对这个问题的理解.请加上或纠正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值