synchronized
キーワードの代わりに@Synchronized
注釈が付いていたら、それは悪いことでしたか?この場合、アノテーションはより自然になりますか(synchronized
同期されていないメソッドでメソッドをオーバーライドできるためsynchronized
、メソッド自体については何も言わず、メソッドに加えて何かを指定します(メソッドは特定の方法で保護されます) 、それでそれは本当にキーワードではありませんか?)
質問する
3204 次
4 に答える
4
同期はコードのブロックで使用され、コードのブロックに注釈を追加することはできません。
メソッドやクラスを使用することもできますが@synchronized
、Javaが最初に導入されたとき、Javaはアノテーションをサポートしていませんでした。
それはそれ自身のキーワードに値するほど重要だと思います。;)
于 2012-09-19T16:00:57.243 に答える
2
かっこいいですが、アノテーションでsynchronized
キーワードを完全に置き換えることはできません。アノテーションでマークできない同期ブロックがあります。
さらに、同期ブロックは、同期に使用されるモニターを受け入れます。動的に供給することができるため、ある程度の柔軟性があります。すべてのパラメーターはコンパイル時に指定する必要があるため、注釈ではこれを許可しません。
于 2012-09-19T16:02:46.210 に答える
2
Synchronizedは、バイトコードレベルで実質的に直接monitorenter/monitorexitに変換します。そして、何を同期するかを指定しますが、注釈を付けてそれを行うことはできません。
synchronized (myLock) {
}
ですから、それがキーワードであることは私には完全に理にかなっています。
于 2012-09-19T16:11:54.007 に答える
1
おそらく同期のメソッドバージョンとして、はい。ただし、同期のもう1つの使用法では、同期しているモニターを指定できます。
public void someMethod()
{
synchronized(this)
{
//sync code
}
//unsynced code.
}
于 2012-09-19T16:01:52.397 に答える