-1

マルチスレッド環境に 1 つの静的共有リソースがあります。シーケンシャル アクセスを確保するために、マルチスレッド環境で考慮する必要があることは何ですか?

4

2 に答える 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 に答える