マルチスレッド環境に 1 つの静的共有リソースがあります。シーケンシャル アクセスを確保するために、マルチスレッド環境で考慮する必要があることは何ですか?
2 に答える
3
クラス レベルのロックを使用して操作を実行します。例えば
public static void setResource(someResource) {
synchronized(ClassName.class) {
resource = someResource;
}
}
代わりに、次のことができます
public static synchronized void setResource(someResource) {
resource = someResource;
}
于 2013-08-02T12:52:37.320 に答える
0
その ReadOnly Resource が不変にしようとする場合、マルチスレッドについて心配する必要はありません。
ReadOnly でない場合は、静的にしないでください。悪い考えです。アクセスを同期するには、クラス レベルのロックが必要です。クラス レベルのロックは、アプリケーションのパフォーマンスに悪影響を及ぼす可能性があるため、慎重に調べる必要があります。
ConcurrentHashMaP 、 ConcurrentLinkedQueue などの同時データ構造のいずれかを使用するように静的共有リソースを変換できる場合があります。
于 2013-08-02T16:08:51.833 に答える