多线程类小结

多线程类总结

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()  //计数器减一