java的concurrent用法详解

java的concurrent用法详解

ID:47513493

大小:78.73 KB

页数:22页

时间:2019-09-12

java的concurrent用法详解_第1页
java的concurrent用法详解_第2页
java的concurrent用法详解_第3页
java的concurrent用法详解_第4页
java的concurrent用法详解_第5页
资源描述:

《java的concurrent用法详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun大神(DougLea)终于为我

2、们这些可怜的小程序员推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件(raceconditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。Executor            :具体Runnable任务的执行者。ExecutorService        :一个线程池管理者,其实现类有多种,我会介绍一部分。我们能把Runnable,Callable提交到池中让其调度。Semaphore            :一个计数信号量R

3、eentrantLock        :一个可重入的互斥锁定Lock,功能类似synchronized,但要强大的多。Future              :是与Runnable,Callable进行交互的接口,比如一个线程执行结束后取返回的结果等等,还提供了cancel终止线程。BlockingQueue        :阻塞队列。CompletionService      :ExecutorService的扩展,可以获得线程执行结果的CountDownLatch        :一个同步辅助类,在完成一组正在其他线程中执行的操作

4、之前,它允许一个或多个线程一直等待。 CyclicBarrier        :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 Future              :Future表示异步计算的结果。ScheduledExecutorService:一个ExecutorService,可安排在给定的延迟后运行或定期执行的命令。接下来逐一介绍Executors主要方法说明newFixedThreadPool(固定大小线程池)创建一个可重用固定线程集合的线程池,以共享的无界队列方式来运行这些线程(只有要请求的过来,就会在一

5、个队列里等待执行)。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。newCachedThreadPool(无界线程池,可以进行自动线程回收)创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用execute将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有60秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。注

6、意,可以使用ThreadPoolExecutor构造方法创建具有类似属性但细节不同(例如超时参数)的线程池。newSingleThreadExecutor(单个后台线程)创建一个使用单个worker线程的Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的newFixedThreadPool(1)不同,可保证无需重新配置此方法所返回的执行程序即可使用其他

7、的线程。这些方法返回的都是ExecutorService对象,这个对象可以理解为就是一个线程池。这个线程池的功能还是比较完善的。可以提交任务submit()可以结束线程池shutdown()。01import java.util.concurrent.ExecutorService;02import java.util.concurrent.Executors;03public class MyExecutorextends Thread{04private int index;05public MyExecutor(int i){06 

8、   this.index=i;07}08public void run(){09    try{10     System.out.println("["+this.index+"]star

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。