JVM용 Java 동시성 도구. 이 프로젝트는 현재 JDK에서 누락된 일부 동시 데이터 구조를 제공하는 것을 목표로 합니다.
동시 대기열에 대한 SPSC/MPSC/SPMC/MPMC 변형:
SPSC/MPSC 연결된 어레이 큐(제한된 및 무제한)는 성능, 할당 및 공간 간의 균형을 제공합니다.
MPSC/MPMC XAdd 기반의 무제한 연결된 배열 큐는 생산자에게 감소된 경합 비용(CAS 루프 대신 XADD 사용)과 할당 감소를 위한 풀링된 큐 청크를 제공합니다.
확장된 대기열 인터페이스(MessagePassingQueue):
많은 대기열은 Unsafe
(기본값, sun.mic.Unsafe
사용) 및 Atomic
( AtomicFieldUpdater
사용) 변형뿐만 아니라 Unpadded
(필드 패딩을 피하고 잘못된 공유를 제거하여 공간을 줄임)로 사용할 수 있습니다.
앞으로 더 많은 정보가 제공될 예정이며 기여/제안을 환영합니다. JCTools는 커뮤니티의 지원을 받았으며 문제/테스트/문서/코드 형태의 기여가 성장하는 데 도움이 되었습니다. JCTools는 합리적인 가격으로 뛰어난 성능을 제공합니다(Apache 2.0 라이선스에 따라 무료!). 이는 안정적이며 Netty, RxJava 등과 같은 뛰어난 프레임워크에서 사용됩니다. JCTools는 상용 제품에서도 훌륭한 결과를 얻기 위해 사용됩니다.
Maven을 사용하여 최신 버전을 종속성으로 추가합니다.
< dependency >
< groupId >org.jctools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >4.0.3</ version >
</ dependency >
또는 소스에서 빌드된 멋진 https://jitpack.io/ 버전을 사용하려면 Jitpack 저장소를 추가해야 합니다.
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
그리고 다음 종속성을 설정합니다.
< dependency >
< groupId >com.github.JCTools.JCTools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >v4.0.3</ version >
</ dependency >
버전을 '4.0.5-SNAPSHOT'으로 설정하여 이 저장소(에지에 라이브)의 최신 스냅샷을 사용할 수도 있습니다.
JCTools는 Maven으로 구축되었으며 기존 Maven 설치와 JDK8이 필요합니다(빌드에만 해당, 런타임은 1.6 호환).
경로에 'MAVEN_HOME/bin'이 있고 JDK8이 'JAVA_HOME'으로 설정되어 있으면 이 디렉터리에서 "mvn install"을 실행할 수 있습니다.
JCTools를 자유롭게 복사하고 확장할 수 있지만 더 나은 지원, 업그레이드 경로 및 논의를 가능하게 하기 위해 JCTools에 대한 버전 종속성이 있는 경우 이를 훨씬 선호합니다. Maven/Gradle용 셰이드 플러그인은 JCTools를 라이브러리와 융합하는 데 선호되는 방법입니다. 예제는 ShadeJCToolsSamples 프로젝트에서 사용할 수 있습니다.
JCTools는 JMH 벤치마크와 핸드롤링 하네스를 모두 사용하여 벤치마킹되었습니다. 벤치마크 및 관련 지침은 jctools-benchmarks 모듈 README에서 찾을 수 있습니다. 마음껏 실험해 보시고 귀하의 하드웨어에서는 어떻게 되었는지 알려 주시기 바랍니다.
mvn package
cd jctools-concurrency-test
java -jar target/concurrency-test.jar -v
실험 작업은 jctools-experimental 모듈에서 사용할 수 있습니다. 대부분의 내용은 안정화 및 출시될 코어로 이식하기 위한 목적으로 개발되었지만 일부 구현은 순전히 참조용으로 유지되고 일부는 결코 완료되지 않을 수도 있습니다. 내 아이야, Jabberwock을 조심해라.
JCTools를 논의하는 가장 좋은 방법은 GitHub 문제 시스템에 있습니다. 어떤 질문이라도 좋습니다. GitHub는 twitter/mailing-list/gitter(또는 적어도 우리가 생각하는 것)보다 지식 공유를 위한 더 나은 플랫폼을 제공합니다.
JCTools 개발을 지원하기 위해 JetBrains로부터 IntelliJ IDEA 라이선스를 받았습니다. 이는 개발자와 궁극적으로 커뮤니티에 도움이 되는 훌륭한 도구 모음입니다.
정말 멋지고 영감을 주는 회사입니다. 지금 해당 제품을 구입하세요!!!
JCTools는 꾸준한 PR, 제안 및 사용자 피드백을 받아왔습니다. 커뮤니티입니다! 참여해 주셔서 감사합니다!