たとえば、複数の値を持つ列挙型があるとします。
public enum Category {
A, B, C, D;
}
また、一度にカテゴリごとに 1 つのアイテムのみを処理するように、ロック メカニズムを作成したいと考えています。私の最初のアイデアは、次のようなことをすることでした:
Set categories = new HashSet();
for (Category cat : Category.values() {
categories.put(cat);
}
そして、ロックを取得する必要がある場合は、次のようにします。
synchronized(categories.get(category)) {
....
}
これは機能しますか、それともすべてグローバルな列挙値への参照であるため、他のスレッドが他の場所で同じことをした場合、それらは互いにブロックしますか?
ありがとう!