ran*_*don 2 java multithreading
可能重复:
同步静态方法如何在Java中工作?
有人能让我理解以下两个功能之间的根本区别:
public static void synchronized f() {… }
Run Code Online (Sandbox Code Playgroud)
和
public void synchronized f() {… }
Run Code Online (Sandbox Code Playgroud)
Rob*_*rop 12
如果是
public void synchronized f(){...}
Run Code Online (Sandbox Code Playgroud)
同步是封闭类的每个实例.这意味着多个线程可以调用f在不同的类的实例.
对于
public static void synchronized f(){...}
Run Code Online (Sandbox Code Playgroud)
无论封闭类的实例数是多少,一次只能有一个线程调用该方法.
从技术上讲,synchronized第一个示例中的监视器是对象实例的监视器,第二个示例中的监视器是对象的监视器Class.
请注意,如果您有不同的同名类ClassLoaders,则不要共享同一个监视器,但这是您不太可能遇到的细节.
| 归档时间: |
|
| 查看次数: |
9042 次 |
| 最近记录: |