のコストと私の方法は、正しく書かれており、正しく同期されていると仮定は、私が優れているかを決定する方法について疑問に思って:の高いコンカレントJavaプログラムで同期
void synchronized something() {
...
}
または
void something() {
synchronized(this) {
...
}
// here do stuff no requiring synchronization
.
. // do computation 'A'
.
synchronized(this) {
...
}
// here do other stuff no requiring synchronization
.
. // do computation 'B'
.
synchronized(this) {
...
}
}
今私は、計算 'A'と 'B'に多くの時間がかかる場合、第2のバージョンが明らかに優れていることを認識しています。
私の質問は、次のとおりです。どの時点で、2番目のバージョンが効率的であることが分かりますか?
ロックを数回取得/解放する際、2番目のバージョンが常に高速ですか、隠れたコストがありますか?はい、は時間がかかり
s.getString().substring(0, 2).toLowerCase();
私は* "Java Concurrency in Practice" *のコピーを所有していることに注意してください:) – SyntaxT3rr0r