インターフェイスのメソッドで使用するsynchronized
と、コンパイラでエラーが発生します。なぜこれが起こるのか教えていただけますか?
synchronized
のメソッドに適用できない(論理的に) 理由は何interface
ですか?
このリンクで、スレッドプールを介したインターフェイスを作成しようとしました。上記のコードでインターフェイスを作成するのを手伝ってください。
インターフェイスのメソッドで使用するsynchronized
と、コンパイラでエラーが発生します。なぜこれが起こるのか教えていただけますか?
synchronized
のメソッドに適用できない(論理的に) 理由は何interface
ですか?
このリンクで、スレッドプールを介したインターフェイスを作成しようとしました。上記のコードでインターフェイスを作成するのを手伝ってください。
synchronized
実装の詳細であるためです。メソッドの 1 つの実装では、メソッドを同期化する必要があるかもしれませんが、別の実装では必要ないかもしれません。呼び出し元は、メソッドが同期されているかどうかを気にしません。これは、メソッドが何をするかを示すコントラクトの一部ではありません。契約を履行するためにどの同期技術が使用されるかは関係ありません。
synchronized は実装の詳細であり、インターフェイスには属しません。
キーワード synchronized の使用を伴わない、スレッドセーフである可能性のあるあらゆる種類の実装を持つことができます。
実装をスレッドセーフにするという意図を示すために、何らかの注釈を使用することを検討してください。たとえば、http: //jetbrains.dzone.com/tips/concurrency-hot-try-jcip では、JCIP 同時実行アノテーションの使用方法について説明しています。
ところで。同期を使用する代わりに、Java 並行フレームワークに慣れることができます。同期のような低レベルの構造を直接使用することは、最近では少しアンチパターンと見なされています。
簡単な答えは同期ですメソッドの実装について話していますが、インターフェイスではすべてのメソッドが抽象的であり、実装がないことを意味します。