2014-04-18 13 views
3

Java 8의 ConcurrentHashMap은 6 및 7 JDK 구현이 수행하지만 잠금을 사용하지 않습니다. Java 6 구현의 백 포트가 Java 6에 있습니까?ConcurrentHashMap JDK 8 - JDK 6 백 포트

이유 : 잠금 없음 => 경쟁 없음 => 성능 향상.

+1

응용 프로그램에서 잠금이 병목 현상입니까? –

+0

대부분 2 ~ 3 버킷을 사용하는 경우 예. 또한, 다수의 작성자가 있습니다 (거의 실시간으로 업데이트됩니다). –

+0

호기심에서 벗어나서 Java 8 및 이전 버전 각각에 대해 측정 된 시간은 각각 무엇입니까? –

답변

1

Java 7 이상의 백 포트가 있습니다 (Infinispan에서이 포트를 참조하십시오.이 포트는 blog post입니다). Java 6에서도 작동해야합니다. infinispan jar를 다운로드하여 테스트해볼 가치가 있습니다.

+1

닫기 : "안녕하세요, 불행히도 이것은 ConcurrentMapFactory가 sun.misc.Unsafe 대신 com.sun.unsafe.Unsafe의 존재를 확인하기 때문에 JDK6에서 작동하지 않습니다 .JIRA 문제를 열었습니다 : https : //issues.jboss .org/browse/ISPN-2237 로버트 " –

+0

전체 라이브러리를 원 항아리입니까? 또는 더 간단하게 말하자면, 고기 = 동시성 백 포트를 얻을 수 있습니까? –

+0

그게 문제인지는 모르겠지만 소스를 프로젝트에 복사하고 다른 패키지 이름으로 가져 오기를 다시 실행하면 가치가있는 것처럼 보입니다. –

0

의 Netty는 backport가와의 Netty의 언어 수준은 자바 6

+0

제 대답을보십시오. –

1

입니다 그것은 우리를 위해 더 이상 눌러 문제가되지 않도록 2014년 4월 때문에 우리는 이미, Java8에 우리의 제품을 이전했다. Doug Lea의 jsr166e을 보면 여전히이 문제가있는 사람들에게 좋습니다. Docs, the jar compiled under Java6.

사이드 노트 : 이제는 심지어 트위터가 Java6 :)로 컴파일 된 jar twitter/jsr166e에 이러한 클래스의 일부를 넣었습니다.