Kal*_*osh 7 java multithreading
class A {
private synchronized f() {
...
...
}
private void g() {
...
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果线程T1正在运行同步的f(),那么线程t2可以运行g(),它在同一时间点不同步,而T1仍在运行f()吗?
wil*_*ood 16
不在同一个A实例上.实例本身就是锁,所以两个方法同时执行两个方法,两个线程需要两个A实例.
是.两种方法都可以在同一个实例上同时执行.
只是f()
同步.线程必须获取this.f()
要执行的监视器,f()
并且每个实例只存在一个监视器.
g()
如果没有同步,则运行该方法不需要监视器锁定,因此任何线程都可以随时执行g()
.
"同步方法在执行之前获取监视器(第17.1节)."
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.6
归档时间: |
|
查看次数: |
8183 次 |
最近记录: |