Semaphore:synchronized关键字的加强版,主要用来控制线程并发的数量(permits)。类发放许可的方式使减法操作,主要方法:acquire(permits),release(permits)。availablePermits()返回可用permits。drainPermits()获取并返回力气可用的permits,使permits=0。getQueueLength():取得等待permits的线程个数,hasQueuedThreads():有无等待许可的线程。
tryAcquire(permits),
Semaphore semaphore = new Semaphore(permits,isFaire)。公平是指是否与线程启动顺序有关,但不代表100%。
Exchanger:用来在两个线程之间传输数据。主要方法exchange()具有阻塞特性。
CountDownLatch:更具意思就可知是一个减数锁。当count不为0时呈wait状态。主要方法await():等待count为0。countDown():count-1。getCount():...。
CyclicBarrier:循环的CountDownLatch,
Phaser:计数操作时加法操作。可以动态添加parties计数。主要方法:arriveAndAwaitAdvance(),arriveAndDeregister(),getPhase(),onAdvance(),getRegisteredParties(),register(),bulkRegister(),getArrivedParties(),getUnarrivedParties(),arrive(),awaitAdvance(),forceTermination(),isTerminated(),
Executor:
ThreadPoolExecutor:
Future,Callable: Future.get()有阻塞特性。
CompletionService:
ThreadPoolExecutor executor = new ThreadPoolExecutor(5,10,5,TimeUnit.SECONDS,new LinkedBlockingDeque<Runnable>());
CompletionService csRef = new ExecutorCompletionService(executor);
csRef.submit(....);csRef.take().get()。
ScheduledExecutorService :
ForkJoinPool:
未完待续。。。