关于Java中的同步,我有几个查询。我在网上阅读了很多内容,并为自己提供了很多信息,并因此产生了许多疑问。我会列出我的疑问,所以请有人帮助我解决我的疑问。
对象级同步:
1)对于以下代码示例。
public synchronized void a(){
//todo
}
}
什么是LOCK?如下面的示例代码所示,它将自动锁定“ this”吗?
public void a(){
synchronized (this) {
//TODO
}
}
2)我们有多种方法代码块锁定在“ this”上。
public void a(){
synchronized (this) {
//TODO
}
}
public synchronized void b(){
synchronized (this) {
//TODO
}
}
那么这是否意味着如果b()的代码块被锁定,那么任何其他线程也将无法同时访问a(),因为它们对对象(this)有锁定?
类级同步:
3)对于以下代码
public static void c(){
synchronized (Main.class) {
//todo
}
}public static void d(){
synchronized (Main.class) {
//todo
}
}public static void e(){
//no syncronization here
}
问题1:如果c()被锁定,那么任何其他线程也可以访问具有同步块的d()吗?问题2:如果c()处于锁定状态,那么任何其他线程都可以访问非同步方法e()吗?
在第3点中。e()始终可以被多个线程访问,无论如何,因为它不同步。
希望有帮助:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句