내가, 내가 프로덕션 환경에서 이상한 문제에 직면JBoss 캐시. 동시성 문제
JBossCache '말라 게타'3.2.0.GA를 사용하고 가끔 제대로 작동하지 않습니다 제이 보스 캐시에 기록합니다. 나는 수시로 간단한 자바 응용 프로그램
public static void testCache() {
Cache cache = new DefaultCacheFactory().createCache(false);
cache.create();
cache.start();
final Node node = cache.getRoot().addChild(Fqn.fromString("/child1"));
int threadsCount = 20;
final CyclicBarrier b = new CyclicBarrier(threadsCount);
for (int i = 0; i < threadsCount; i++) {
final long j = i;
new Thread(new Runnable() {
@Override
public void run() {
try {
b.await();
String name = RandomGenerator.getRandomName(4);
node.put(j, name);
String nameFromCache = (String) node.get(j);
if (!name.equals(nameFromCache)) {
System.out.println("error");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
으로이 상황을 재현하려고, 난 static void main
에서 실행이 테스트 출력 "오류", 실패합니다. 1의 3은 오류 메시지를 반환합니다. 단순히 null을 반환합니다. 나는 모든 기계에 그것을 재현 할 수 없다.
단서가 있습니까?
액세스하기 전에 노드를 잠글 필요가 있습니까? – Fakrudeen