假设我有一个具有多个值的枚举,例如:
public enum Category {
A, B, C, D;
}
并且想创建一个锁定机制,以便我们一次只处理每个类别的一个项目。我的第一个想法是做这样的事情:
Set categories = new HashSet();
for (Category cat : Category.values() {
categories.put(cat);
}
然后当我需要获取锁时,我执行以下操作:
synchronized(categories.get(category)) {
....
}
这会起作用还是都是对全局枚举值的引用,所以如果其他一些线程在其他地方做了同样的事情,它们会互相阻塞吗?
谢谢!