java类同步_Java中方法,对象,类的同步

关于在多线程环境中使用同步,我需要一些澄清.我在下面有一个小例子类.但我实际上发现很难做出以下内容如何工作的测试用例;我想要测试用例的原因是要了解同步如何处理这些不同的场景

>如果一个线程调用SharedResource.staticMethod,它将获取该类的锁.它是否意味着一个SharedResource的实例,比如x,必须等到它被锁定到exectute x.staticMethod.

>将在块中同步此操作,获取代码的该部分或整个对象的锁定.即另一个线程可以在同一个对象上调用相同的方法;但执行不属于同步块的其余代码

>如果上述观点为真,那么使用虚拟对象锁定不会提供任何额外的好处.正确?

>因此有不同级别的同步.类级别,对象级别,方法级别和块级别.这意味着应该存在这些个别关卡的锁?

如果我获取了对象的锁,另一个Thread不能调用同一个对象上的任何方法,但是如果我获取了该方法的锁,则另一个线程可以获取另一个方法的锁.它是否正确?

关于如何创建作用于同一对象和相同方法的两个线程的一些提示将有所帮助(我理解我需要扩展Thread类或实现Runnable接口).但不确定如何让两个线程在同一个对象上调用相同的方法.

class SharedResource {

public Integer x =0;

public static Integer y=0;

Object dummy = new Object();

public Integer z=0;

public synchronized static void staticMethod(){

System.out.println("static Method is called");

y++;

}

public synchronized void incrementX(){

System.out.println("instance method; incrementX");

x++;

}

public void incrementXBlock(){

synchronized(this){

x++;

}

System.out.println("instance method; incrementXBlock");

}

public void incrementZ(){

synchronized (dummy) {

z++;

}

System.out.println("synchronized on dummy; incrementZ method ");

}

}

public class ThreadSynchronization extends Thread {

}

我已经阅读过这些帖子,但如果我清楚地理解这些帖子,我就不是肯定的.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值