ale*_*pro 2 java spring static multithreading synchronized
我有一个经理作为 Spring 有线 bean。我相信默认情况下为 spring 定义的每个 bean 都连接为单例。我在这个 bean 中有一些需要同步的方法。那我该怎么做——
void zzz() {
synchronized (this) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
或者
void zzz() {
synchronized (MyClass.class) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
?
两者的主要区别在于,在第一种情况下,类的实例作为监视器,第二种情况使用类作为监视器。
第一个可能是您的情况的方法,因为在不久的将来,如果您决定拥有多个类的实例,它们的方法将在相应的实例上同步。与使用类作为监视器相反,如果一个线程在一个实例上调用同步方法,则其他线程将无法调用同一类的任何实例上的方法(那些同步的)。
| 归档时间: |
|
| 查看次数: |
8256 次 |
| 最近记录: |