【例子介绍】Java JUC 之线程通信实例
java并发包的例子,帮助更好学习java的juc包
【源码结构】
.
├── JUC
│ ├── Disruptor.md
│ ├── JMH.md
│ ├── README.md
│ ├── pom.xml
│ ├── src
│ │ └── main
│ │ ├── java
│ │ │ ├── com
│ │ │ │ └── mashibing
│ │ │ │ ├── JustTest.java
│ │ │ │ ├── Tets.java
│ │ │ │ ├── disruptor
│ │ │ │ │ ├── v1
│ │ │ │ │ │ ├── LongEvent.java
│ │ │ │ │ │ ├── LongEventFactory.java
│ │ │ │ │ │ ├── LongEventHandler.java
│ │ │ │ │ │ ├── LongEventProducer.java
│ │ │ │ │ │ └── Main.java
│ │ │ │ │ ├── v2
│ │ │ │ │ │ ├── LongEvent.java
│ │ │ │ │ │ ├── LongEventFactory.java
│ │ │ │ │ │ ├── LongEventHandler.java
│ │ │ │ │ │ ├── LongEventProducer.java
│ │ │ │ │ │ ├── Main.java
│ │ │ │ │ │ └── readme
│ │ │ │ │ ├── v3
│ │ │ │ │ │ ├── LongEvent.java
│ │ │ │ │ │ ├── Main.java
│ │ │ │ │ │ └── readme
│ │ │ │ │ └── v4
│ │ │ │ │ ├── LongEvent.java
│ │ │ │ │ ├── Main.java
│ │ │ │ │ └── readme
│ │ │ │ └── juc
│ │ │ │ ├── c_000
│ │ │ │ │ ├── T01_WhatIsThread.java
│ │ │ │ │ ├── T02_HowToCreateThread.java
│ │ │ │ │ ├── T03_Sleep_Yield_Join.java
│ │ │ │ │ └── T04_ThreadState.java
│ │ │ │ ├── c_001
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_002
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_003
│ │ │ │ │ ├── T.java
│ │ │ │ │ └── T1.java
│ │ │ │ ├── c_004
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_005
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_006
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_007
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_008
│ │ │ │ │ └── Account.java
│ │ │ │ ├── c_009
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_010
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_011
│ │ │ │ │ └── T.java
│ │ │ │ ├── c_011_01
│ │ │ │ │ └── readme
│ │ │ │ ├── c_012_Volatile
│ │ │ │ │ ├── T01_HelloVolatile.java
│ │ │ │ │ ├── T02_VolatileReference1.java
│ │ │ │ │ ├── T03________VolatileReference2.java
│ │ │ │ │ ├── T04_VolatileNotSync.java
│ │ │ │ │ └── T05_VolatileVsSync.java
│ │ │ │ ├── c_016_LockOptimization
│ │ │ │ │ └── FineCoarseLock.java
│ │ │ │ ├── c_017_MoreAboutSync
│ │ │ │ │ ├── DoNotLockString.java
│ │ │ │ │ └── SyncSameObject.java
│ │ │ │ ├── c_018_00_AtomicXXX
│ │ │ │ │ ├── T01_AtomicInteger.java
│ │ │ │ │ ├── T02_AtomicVsSyncVsLongAdder.java
│ │ │ │ │ └── T03________SyncVsLongAdder.java
│ │ │ │ ├── c_018_01_Unsafe
│ │ │ │ │ └── HelloUnsafe.java
│ │ │ │ ├── c_020
│ │ │ │ │ ├── T01_ReentrantLock1.java
│ │ │ │ │ ├── T02_ReentrantLock2.java
│ │ │ │ │ ├── T03_ReentrantLock3.java
│ │ │ │ │ ├── T04_ReentrantLock4.java
│ │ │ │ │ ├── T05_ReentrantLock5.java
│ │ │ │ │ ├── T06_TestCountDownLatch.java
│ │ │ │ │ ├── T07_TestCyclicBarrier.java
│ │ │ │ │ ├── T08_TestPhaser.java
│ │ │ │ │ ├── T09_TestPhaser2.java
│ │ │ │ │ ├── T10_TestReadWriteLock.java
│ │ │ │ │ ├── T11_TestSemaphore.java
│ │ │ │ │ ├── T12_TestExchanger.java
│ │ │ │ │ └── T13_TestLockSupport.java
│ │ │ │ ├── c_020_01_Interview
│ │ │ │ │ ├── T01_WithoutVolatile.java
│ │ │ │ │ ├── T02_WithVolatile.java
│ │ │ │ │ ├── T03_NotifyHoldingLock.java
│ │ │ │ │ ├── T04_NotifyFreeLock.java
│ │ │ │ │ ├── T05_CountDownLatch.java
│ │ │ │ │ ├── T06_LockSupport.java
│ │ │ │ │ ├── T07_LockSupport_WithoutSleep.java
│ │ │ │ │ └── T08_Semaphore.java
│ │ │ │ ├── c_021_01_interview
│ │ │ │ │ ├── MyContainer1.java
│ │ │ │ │ └── MyContainer2.java
│ │ │ │ ├── c_021_02_AQS
│ │ │ │ │ ├── MLock.java
│ │ │ │ │ ├── Main.java
│ │ │ │ │ ├── Sync.java
│ │ │ │ │ └── TestReentrantLock.java
│ │ │ │ ├── c_021_03_VarHandle
│ │ │ │ │ └── T01_HelloVarHandle.java
│ │ │ │ ├── c_022_RefTypeAndThreadLocal
│ │ │ │ │ ├── M.java
│ │ │ │ │ ├── T01_NormalReference.java
│ │ │ │ │ ├── T02_SoftReference.java
│ │ │ │ │ ├── T03_WeakReference.java
│ │ │ │ │ ├── T04_PhantomReference.java
│ │ │ │ │ ├── ThreadLocal1.java
│ │ │ │ │ └── ThreadLocal2.java
│ │ │ │ ├── c_023
│ │ │ │ │ └── Singleton.java
│ │ │ │ ├── c_023_01_Containers
│ │ │ │ │ ├── HelloQueue.java
│ │ │ │ │ ├── T01_HelloArray.java
│ │ │ │ │ └── T02_CollectionListSetQueue.java
│ │ │ │ ├── c_023_02_FromHashtableToCHM
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ ├── T01_TestHashtable.java
│ │ │ │ │ ├── T02_TestHashMap.java
│ │ │ │ │ ├── T03_TestSynchronizedHashMap.java
│ │ │ │ │ └── T04_TestConcurrentHashMap.java
│ │ │ │ ├── c_024_FromVectorToQueue
│ │ │ │ │ ├── TicketSeller1.java
│ │ │ │ │ ├── TicketSeller2.java
│ │ │ │ │ ├── TicketSeller3.java
│ │ │ │ │ ├── TicketSeller4.java
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── c_025
│ │ │ │ │ ├── T01_ConcurrentMap.java
│ │ │ │ │ ├── T02_CopyOnWriteList.java
│ │ │ │ │ ├── T03_SynchronizedList.java
│ │ │ │ │ ├── T04_ConcurrentQueue.java
│ │ │ │ │ ├── T05_LinkedBlockingQueue.java
│ │ │ │ │ ├── T06_ArrayBlockingQueue.java
│ │ │ │ │ ├── T07_01_PriorityQueque.java
│ │ │ │ │ ├── T07_DelayQueue.java
│ │ │ │ │ ├── T08_SynchronusQueue.java
│ │ │ │ │ ├── T09_TransferQueue.java
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── c_026_00_interview
│ │ │ │ │ └── A1B2C3
│ │ │ │ │ ├── T01_00_Question.java
│ │ │ │ │ ├── T02_00_LockSupport.java
│ │ │ │ │ ├── T03_00_cas.java
│ │ │ │ │ ├── T04_00_BlockingQueue.java
│ │ │ │ │ ├── T05_00_AtomicInteger.java
│ │ │ │ │ ├── T06_00_sync_wait_notify.java
│ │ │ │ │ ├── T07_00_sync_wait_notify.java
│ │ │ │ │ ├── T08_00_lock_condition.java
│ │ │ │ │ ├── T09_00_lock_condition.java
│ │ │ │ │ ├── T10_00_PipedStream.java
│ │ │ │ │ ├── T12_00_Exchanger_Not_Work.java
│ │ │ │ │ ├── T13_TransferQueue.java
│ │ │ │ │ └── readme
│ │ │ │ ├── c_026_01_ThreadPool
│ │ │ │ │ ├── T01_MyExecutor.java
│ │ │ │ │ ├── T02_ExecutorService.java
│ │ │ │ │ ├── T03_Callable.java
│ │ │ │ │ ├── T04_Executors.java
│ │ │ │ │ ├── T05_00_HelloThreadPool.java
│ │ │ │ │ ├── T05_ThreadPool.java
│ │ │ │ │ ├── T06_00_Future.java
│ │ │ │ │ ├── T06_01_CompletableFuture.java
│ │ │ │ │ ├── T07_SingleThreadPool.java
│ │ │ │ │ ├── T08_CachedPool.java
│ │ │ │ │ ├── T09_FixedThreadPool.java
│ │ │ │ │ ├── T10_ScheduledPool.java
│ │ │ │ │ ├── T11_WorkStealingPool.java
│ │ │ │ │ ├── T12_ForkJoinPool.java
│ │ │ │ │ ├── T13_ParallelStreamAPI.java
│ │ │ │ │ ├── T14_MyRejectedHandler.java
│ │ │ │ │ ├── ThreadPoolExecutor源码解析.md
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── c_027_future_to_loom
│ │ │ │ │ ├── T01_Future.java
│ │ │ │ │ └── T02_ListenableFuture.java
│ │ │ │ ├── c_028_FalseSharing
│ │ │ │ │ ├── T01_CacheLinePadding.java
│ │ │ │ │ └── T02_CacheLinePadding.java
│ │ │ │ └── c_029_WriteCombining
│ │ │ │ └── WriteCombining.java
│ │ │ └── 思考题.txt
│ │ └── resources
│ │ └── Test.puml
│ └── target
│ ├── classes
│ │ ├── Test.puml
│ │ └── com
│ │ └── mashibing
│ │ ├── JustTest.class
│ │ ├── Tets.class
│ │ ├── disruptor
│ │ │ ├── v1
│ │ │ │ ├── LongEvent.class
│ │ │ │ ├── LongEventFactory.class
│ │ │ │ ├── LongEventHandler.class
│ │ │ │ ├── LongEventProducer.class
│ │ │ │ └── Main.class
│ │ │ ├── v2
│ │ │ │ ├── LongEvent.class
│ │ │ │ ├── LongEventFactory.class
│ │ │ │ ├── LongEventHandler.class
│ │ │ │ ├── LongEventProducer$1.class
│ │ │ │ ├── LongEventProducer.class
│ │ │ │ └── Main.class
│ │ │ ├── v3
│ │ │ │ ├── LongEvent.class
│ │ │ │ └── Main.class
│ │ │ └── v4
│ │ │ ├── LongEvent.class
│ │ │ └── Main.class
│ │ └── juc
│ │ ├── c_000
│ │ │ ├── T01_WhatIsThread$1.class
│ │ │ ├── T01_WhatIsThread$T1.class
│ │ │ ├── T01_WhatIsThread.class
│ │ │ ├── T02_HowToCreateThread$MyRun.class
│ │ │ ├── T02_HowToCreateThread$MyThread.class
│ │ │ ├── T02_HowToCreateThread.class
│ │ │ ├── T03_Sleep_Yield_Join.class
│ │ │ ├── T04_ThreadState$MyThread.class
│ │ │ └── T04_ThreadState.class
│ │ ├── c_001
│ │ │ └── T.class
│ │ ├── c_002
│ │ │ └── T.class
│ │ ├── c_003
│ │ │ ├── T.class
│ │ │ └── T1.class
│ │ ├── c_004
│ │ │ └── T.class
│ │ ├── c_005
│ │ │ └── T.class
│ │ ├── c_006
│ │ │ └── T.class
│ │ ├── c_007
│ │ │ └── T.class
│ │ ├── c_008
│ │ │ └── Account.class
│ │ ├── c_009
│ │ │ └── T.class
│ │ ├── c_010
│ │ │ ├── T.class
│ │ │ └── TT.class
│ │ ├── c_011
│ │ │ ├── T$1.class
│ │ │ └── T.class
│ │ ├── c_012_Volatile
│ │ │ ├── T01_HelloVolatile.class
│ │ │ ├── T02_VolatileReference1.class
│ │ │ ├── T03________VolatileReference2$Data.class
│ │ │ ├── T03________VolatileReference2.class
│ │ │ ├── T04_VolatileNotSync.class
│ │ │ └── T05_VolatileVsSync.class
│ │ ├── c_016_LockOptimization
│ │ │ └── FineCoarseLock.class
│ │ ├── c_017_MoreAboutSync
│ │ │ ├── DoNotLockString.class
│ │ │ └── SyncSameObject.class
│ │ ├── c_018_00_AtomicXXX
│ │ │ ├── T01_AtomicInteger.class
│ │ │ ├── T02_AtomicVsSyncVsLongAdder$1.class
│ │ │ ├── T02_AtomicVsSyncVsLongAdder.class
│ │ │ ├── T03________SyncVsLongAdder$1.class
│ │ │ └── T03________SyncVsLongAdder.class
│ │ ├── c_018_01_Unsafe
│ │ │ └── HelloUnsafe.class
│ │ ├── c_020
│ │ │ ├── T01_ReentrantLock1.class
│ │ │ ├── T02_ReentrantLock2.class
│ │ │ ├── T03_ReentrantLock3.class
│ │ │ ├── T04_ReentrantLock4.class
│ │ │ ├── T05_ReentrantLock5.class
│ │ │ ├── T06_TestCountDownLatch.class
│ │ │ ├── T07_TestCyclicBarrier.class
│ │ │ ├── T08_TestPhaser$MarriagePhaser.class
│ │ │ ├── T08_TestPhaser$Person.class
│ │ │ ├── T08_TestPhaser.class
│ │ │ ├── T09_TestPhaser2$MarriagePhaser.class
│ │ │ ├── T09_TestPhaser2$Person.class
│ │ │ ├── T09_TestPhaser2.class
│ │ │ ├── T10_TestReadWriteLock.class
│ │ │ ├── T11_TestSemaphore.class
│ │ │ ├── T12_TestExchanger.class
│ │ │ └── T13_TestLockSupport.class
│ │ ├── c_020_01_Interview
│ │ │ ├── T01_WithoutVolatile.class
│ │ │ ├── T02_WithVolatile.class
│ │ │ ├── T03_NotifyHoldingLock.class
│ │ │ ├── T04_NotifyFreeLock.class
│ │ │ ├── T05_CountDownLatch.class
│ │ │ ├── T06_LockSupport.class
│ │ │ ├── T07_LockSupport_WithoutSleep.class
│ │ │ └── T08_Semaphore.class
│ │ ├── c_021_01_interview
│ │ │ ├── MyContainer1.class
│ │ │ └── MyContainer2.class
│ │ ├── c_021_02_AQS
│ │ │ ├── MLock.class
│ │ │ ├── Main.class
│ │ │ ├── Sync.class
│ │ │ └── TestReentrantLock.class
│ │ ├── c_021_03_VarHandle
│ │ │ └── T01_HelloVarHandle.class
│ │ ├── c_022_RefTypeAndThreadLocal
│ │ │ ├── M.class
│ │ │ ├── Person.class
│ │ │ ├── T01_NormalReference.class
│ │ │ ├── T02_SoftReference.class
│ │ │ ├── T03_WeakReference.class
│ │ │ ├── T04_PhantomReference.class
│ │ │ ├── ThreadLocal1.class
│ │ │ ├── ThreadLocal2$Person.class
│ │ │ └── ThreadLocal2.class
│ │ ├── c_023
│ │ │ ├── Singleton$1.class
│ │ │ ├── Singleton$Inner.class
│ │ │ └── Singleton.class
│ │ ├── c_023_01_Containers
│ │ │ ├── HelloQueue.class
│ │ │ ├── T01_HelloArray.class
│ │ │ └── T02_CollectionListSetQueue.class
│ │ ├── c_023_02_FromHashtableToCHM
│ │ │ ├── Constants.class
│ │ │ ├── T01_TestHashtable$MyThread.class
│ │ │ ├── T01_TestHashtable.class
│ │ │ ├── T02_TestHashMap$MyThread.class
│ │ │ ├── T02_TestHashMap.class
│ │ │ ├── T03_TestSynchronizedHashMap$MyThread.class
│ │ │ ├── T03_TestSynchronizedHashMap.class
│ │ │ ├── T04_TestConcurrentHashMap$MyThread.class
│ │ │ └── T04_TestConcurrentHashMap.class
│ │ ├── c_024_FromVectorToQueue
│ │ │ ├── TicketSeller1.class
│ │ │ ├── TicketSeller2.class
│ │ │ ├── TicketSeller3.class
│ │ │ └── TicketSeller4.class
│ │ ├── c_025
│ │ │ ├── T01_ConcurrentMap.class
│ │ │ ├── T02_CopyOnWriteList$1.class
│ │ │ ├── T02_CopyOnWriteList.class
│ │ │ ├── T03_SynchronizedList.class
│ │ │ ├── T04_ConcurrentQueue.class
│ │ │ ├── T05_LinkedBlockingQueue.class
│ │ │ ├── T06_ArrayBlockingQueue.class
│ │ │ ├── T07_01_PriorityQueque.class
│ │ │ ├── T07_DelayQueue$MyTask.class
│ │ │ ├── T07_DelayQueue.class
│ │ │ ├── T08_SynchronusQueue.class
│ │ │ └── T09_TransferQueue.class
│ │ ├── c_026_00_interview
│ │ │ └── A1B2C3
│ │ │ ├── T01_00_Question.class
│ │ │ ├── T02_00_LockSupport.class
│ │ │ ├── T03_00_cas$ReadyToRun.class
│ │ │ ├── T03_00_cas.class
│ │ │ ├── T04_00_BlockingQueue.class
│ │ │ ├── T05_00_AtomicInteger.class
│ │ │ ├── T06_00_sync_wait_notify.class
│ │ │ ├── T07_00_sync_wait_notify.class
│ │ │ ├── T08_00_lock_condition.class
│ │ │ ├── T09_00_lock_condition.class
│ │ │ ├── T10_00_PipedStream.class
│ │ │ ├── T12_00_Exchanger_Not_Work.class
│ │ │ └── T13_TransferQueue.class
│ │ ├── c_026_01_ThreadPool
│ │ │ ├── T01_MyExecutor.class
│ │ │ ├── T02_ExecutorService.class
│ │ │ ├── T03_Callable$1.class
│ │ │ ├── T03_Callable.class
│ │ │ ├── T04_Executors.class
│ │ │ ├── T05_00_HelloThreadPool$Task.class
│ │ │ ├── T05_00_HelloThreadPool.class
│ │ │ ├── T05_ThreadPool.class
│ │ │ ├── T06_00_Future.class
│ │ │ ├── T06_01_CompletableFuture.class
│ │ │ ├── T07_SingleThreadPool.class
│ │ │ ├── T08_CachedPool.class
│ │ │ ├── T09_FixedThreadPool$MyTask.class
│ │ │ ├── T09_FixedThreadPool.class
│ │ │ ├── T10_ScheduledPool.class
│ │ │ ├── T11_WorkStealingPool$R.class
│ │ │ ├── T11_WorkStealingPool.class
│ │ │ ├── T12_ForkJoinPool$AddTask.class
│ │ │ ├── T12_ForkJoinPool$AddTaskRet.class
│ │ │ ├── T12_ForkJoinPool.class
│ │ │ ├── T13_ParallelStreamAPI.class
│ │ │ ├── T14_MyRejectedHandler$MyHandler.class
│ │ │ └── T14_MyRejectedHandler.class
│ │ ├── c_027_future_to_loom
│ │ │ ├── T01_Future.class
│ │ │ ├── T02_ListenableFuture$1.class
│ │ │ ├── T02_ListenableFuture$2.class
│ │ │ └── T02_ListenableFuture.class
│ │ ├── c_028_FalseSharing
│ │ │ ├── T01_CacheLinePadding$1.class
│ │ │ ├── T01_CacheLinePadding$T.class
│ │ │ ├── T01_CacheLinePadding.class
│ │ │ ├── T02_CacheLinePadding$1.class
│ │ │ ├── T02_CacheLinePadding$Padding.class
│ │ │ ├── T02_CacheLinePadding$T.class
│ │ │ └── T02_CacheLinePadding.class
│ │ └── c_029_WriteCombining
│ │ └── WriteCombining.class
│ └── generated-sources
│ └── annotations
└── java的juc实例.zip
94 directories, 327 files
评论