同步的块,并与下面的场景同步方法之间请,我有疑问:Java同步处理
第一部分 --------------:
Class table
{
Synchronized(this)
{
……………………
}
}
这里我们锁定了表类的对象。 -------------------------------------- ...
第2部分:
Class table
{
Customer cust=new Customer();
Synchronized(cust)
{
……………………
}
}
这里我们锁定了customer.ie的对象cust 在part1中,我们锁定了表类的对象。 因为表类的对象可能试图同时访问来自不同位置的已同步的
块,所以我们锁定了表类。为了防止它,我们锁定了第1部分中的表类
的对象。 现在来到part2:? - 这里我们锁定了客户类的对象 ------------------------------- ------- ...
我的疑惑:
我们为什么要锁定在比第2部分的表类其他表类的对象?
如果我们没有得到卡斯特部分2锁定那么我们就可以使用表 类如果我们锁定卡斯特那么我们还需要表类的对象来访问synchronized块访问synchronized块。 表类的对象只需要访问同步块。 由于同步,我们阻止表类的对象同时访问来自不同线程的同步块
。 那么为什么我们应该在table类中锁定table类以外的对象呢?客户类的对象是否会尝试同时访问同步块
不同的地方?在part2中,我们锁定了除表类以外的对象。 在什么情况下,在表类以外的类的对象上获取锁定是
在part2中锁定客户类对象的好处是什么?什么是需要锁定客户类的对象,即表类除外?
如果我们没有在part2中锁定客户类的对象会发生什么样的损害?
请问,我是新来的Java线程,我一直试图围绕这些问题围绕我的头一段时间。任何明确的解释将有助于很多。谢谢
您是否意识到等宽字体很难读取文本?你介意打破代码块中的文字吗? –
我强烈建议您修改格式。此外,Java同步是一个广泛讨论的主题,所以您应该提到您已经在StackOverflow中查看过的内容。 –
当我搜索“什么是Java同步做”在谷歌,第一次打是这个SO问题:http://stackoverflow.com/questions/1085709/what-does-synchronized-mean –