以下程序的行为是什么?静态同步方法和实例同步方法试图访问不同线程中同一类的静态字段?任何线程会被阻塞吗?它非常混乱。访问静态字段的Java同步和静态同步方法
class MyClass
{
public static int i = 5;
public synchronized void m1()
{
System.out.println(i); //uses static field i of MyClass
//T1 is executing this method
}
public static synchronized void m3()
{
//T2 will be able to call this method on same object lock while it is using
//static field i???
System.out.println(i);//uses static field i of MyClass
}
}
不确定你的意思,但Java确实支持静态同步方法:它在类的Class对象上同步。 – 2013-03-06 14:44:04
马克是正确的 – Jazzepi 2013-03-06 15:02:29
@MarkRotteveel:这正是我的意思。它与静态_fields_无关。 – SLaks 2013-03-06 15:10:14