java.util.concurrent包探秘(一)之包简介

    在JDK1.5之前,Java中要进行业务并发时,通常需要程序员独立完成代码实现,而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()、notifyAll()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担。维护成本也比较高。

    从Java1.5版本开始,Java为开发者提供了一个非常高效实用的多线程包——java.util.concurrent。它提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。

    java.util.concurrent包括并发应用程序的锁、互斥、队列、线程池、轻量级任务、有效的并发集合、原子的算术操作和其它基本构件。

     java.util.concurrent包分成了三个部分,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.lock。主要的接口和类如下:

 

    Executor :具体Runnable任务的执行者。
    ExecutorService :一个线程池管理者,其实现类有多种,我会介绍一部分。我们能把Runnable,Callable提交到池中让其调度。
    Semaphore :一个计数信号量
    ReentrantLock :一个可重入的互斥锁定 Lock,功能类似synchronized,但要强大的多。
    Future :是与Runnable,Callable进行交互的接口,比如一个线程执行结束后取返回的结果等等,还提供了cancel终止线程。
    BlockingQueue :阻塞队列。
    CompletionService : ExecutorService的扩展,可以获得线程执行结果的
    CountDownLatch :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 
    CyclicBarrier :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 
    Future :Future 表示异步计算的结果。
    ScheduledExecutorService :一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。

 

===================================在接下来的文章中将结合实例逐一介绍它们的应用场景=======敬请期待!

你可能感兴趣的:(Concurrent)