关于同步方法的一个疑问

03-10-12 zingers
public class A

{

public static synchronized void b(){}

public static synchronized void c(){}

public static void d(){}

}

当A的实例被引用,就是客户程序使用A时,

A.b(),A.c(),A.d()

当A.b()被调用时,A.c()显然不能被调用。

那么这时A.d()可以被其它进程调用吗?

如果这3个方法不是静态方法,没有static参数。

对同一个实例和对于不同实例,

上面的结果有没有不同,

就是A a1 = new A(),A a2 = new A(),

当调用a1.b(),和a2.c()有没有冲突?

当调用a1.b(),和a1.d()有没有冲突?

我对线程和同步不太掌握,希望大家邦我澄清一下。

    

无道
2003-10-20 12:33
(1)静态方法只能对方法同步,而与实例无关,所以在同一时间内对b的调用不会阻塞c,但在同一时间多个线程不能同时访问访问同一个静态方法。

(2)如果对于非静态方法而言,同步是针对对象实例的,所以不同实例之间不存在同步问题。

猜你喜欢