public static synchronized和public static有什么区别?

时间:2011-02-23 11:49:17

标签: java

正如我所说, 有什么区别 public static synchronized .. public static ? 任何一个例子?

3 个答案:

答案 0 :(得分:3)

synchronized关键字确保一次只能由一个线程调用方法。如果你没有放置同步,它本质上不是线程安全的。

答案 1 :(得分:1)

  • 静态同步 - 在方法上 获取Class
  • 的锁定
  • 静态

    静态意味着每个类一个,而不是每个对象一个,无论如何    可能存在许多类的实例。    这意味着您可以使用它们    没有创建一个实例    class.Static方法是隐含的    最后,因为压倒完成了    基于对象的类型,和    静态方法附加到    类,不是对象。静态方法    在超类中可以被遮蔽    子类中的另一个静态方法,    只要原来的方法是    没有宣布最终。但是,你    不能用a覆盖静态方法    非静态方法。换句话说,你    无法将静态方法更改为    子类中的实例方法。

答案 2 :(得分:1)

你需要注意的一点(一些程序员通常属于那个陷阱)是同步静态方法和非同步静态方法之间没有联系,即:

class A {
    public static synchronized f() {...} //class level lock
    public static g() {...} //object level lock
}
public class TestA{
    public static void main(String[] args){
        A a = new A();
       //Thread 1:
       a.f();
       //Thread 2:
       a.g();
    }
}

f()和g()彼此不同步,因此可以完全同时执行。