多线程类小结
Executor
execute(Runnable command);
ExecutorService
interface ExecutorService extends Executor
<T> Future<T> submit(Callable<T> task); Future<?> submit(Runnable task); <T> Future<T> submit(Runnable task, T result); ...
Future
FutureTask
public class FutureTask<V> extends Object implements Future<V>, Runnable
FutureTask(Callable<V> callable) //创建一个 FutureTask,一旦运行就执行给定的 Callable。 FutureTask(Runnable runnable, V result) //创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。
CompletionService
//能够拿到最先完成的任务的返回值,而不管它们加入线程池的顺序
Future<V> submit(Callable<V> task); Future<V> submit(Runnable task, V result);
CyclicBarrier
//它允许一组线程互相等待,直到到达某个公共屏障点
//线程分别执行,互不影响,执行到barrier.await();时该线程进入等待状态,当几个线程都执行到barrier.await();时,达到CyclicBarrier启动所需的阻塞线程数,进入到new CyclicBarrier(2, new Runnable()...)里面的方法, 执行完里面的方法后,等待的两个线程再次被唤醒,继续各自执行线程后面的语句
CyclicBarrier(int parties) CyclicBarrier(int parties, Runnable barrierAction)
await()
Semaphore
//控制某个资源可被同时访问的个数
Semaphore(int permits) Semaphore(int permits, boolean fair)
acquire() // 获取许可
release() //访问完后释放
CountDownLath
//可用于在一批线程中,在每个线程中countDown(),在外部调用一次await(),使得各线程完成后再执行后面代码
CountDownLatch(int count)
await() //阻塞所有线程,直到其count为0
countDown() //计数器减一