いくつかのコードをいくつかのグローバル変数で並列化します。ReentrantReadWriteLock を使用します。スレッドセーフにしたい変数ごとに ReentrantReadWriteLock の独自のインスタンスが 1 つ必要であることを正しく理解しましたか?
つまり、すべてのスレッドが項目をアタッチできる 2 つのリストがあり、すべてのスレッドがそのリストから項目を読み取ることがあります。その場合、次のようなものを実装します。
private static String[] globalVariables = null;
private static String[] processedItems = null;
private final ReentrantReadWriteLock globalVariablesLock = new ReentrantReadWriteLock();
private final Lock globalVariablesEeadLock = globalVariablesLock .readLock();
private final Lock globalVariablesWriteLock = globalVariablesLock .writeLock();
private final ReentrantReadWriteLock processedItemsLock = new ReentrantReadWriteLock();
private final Lock processedItemsLockReadLock = processedItemsLock .readLock();
private final Lock processedItemsLockWriteLock = processedItemsLock .writeLock();
データベース接続(プール)、ロガー、その他のリストなど、さらに多くの変数がある場合はどうでしょうか。
新しい ReentrantReadWriteLock を作成する必要がありますか、それとも何か不足していますか? インターネット上のサンプルは、1 つの変数のみを処理します。
前もって感謝します。