Java7并发编程
代码有毒 mrcode
不断学习并记录笔记,http://mrcode.cn/ 我的 GitHub:https://github.com/zq99299
展开
-
[笔记][Java7并发编程实战手册]3.6 并发阶段任务的运行phaser
[笔记][Java7并发编程实战手册]系列目录简介Phaser是一个更强大的、更复杂的同步辅助类,可以代替CyclicBarrier CountDownLatch的功能,但是比他们更强大。 Phaser类机制是在每一步结束的位置对线程进行同步,当所有的线程都完成了这一步,才能进行下一步。 当我们有并发任务并且需要分解成几步执行的时候,这种机制就非常适合。 CyclicBarrier Count原创 2015-08-23 16:54:59 · 1233 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.3 资源的多副本并发访问控制Semaphore
[笔记][Java7并发编程实战手册]系列目录简介本文继续学习信号量Semaphore机制。 在3.2中其实已经讲解完了,之前对于信号量并发的使用场景不知道,看了本章节才想到一些; 下面就以 租车为列子来讲解并发访问的控制。(示例都很简单或许不符合现实逻辑)信号量(非二进制信号量)是不保证同步的,需要额外的同步示例场景:有一个出租车公司,有三台车,有十个司机,每个司机工作的时间不一致,可以说原创 2015-08-17 22:01:23 · 1154 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]系列第四章 4.1 简介
[笔记][Java7并发编程实战手册]系列目录好把。这一章的任务感觉好难,自己也没有了解过,只能跟着书上的多测试了。第四章在本章中,我们将学习: 1. 创建线程执行器 2. 创建固定大小的线程执行器 3. 在执行器中执行任务并返回结果 4. 运行多个任务并处理第一个结果 5. 运行多个任务并处理所有结果 6. 在执行器中延时执行任务 7. 在执行器中周期性执行任务 8. 在执行器中取原创 2015-08-24 22:25:16 · 983 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.11-4.12在执行器中分离任务的启动和结果的处理和处理在执行器中被拒绝的任务
[笔记][Java7并发编程实战手册]系列目录简介将启动任务和完成任务的结果分离的服务: interface CompletionService: 将启动任务和完成任务的结果分离的服务。使用submit来提交任务。使用take或则poll来获取已完成任务的future对象。可以用来管理异步io,执行读操作,当完成读操作时,可以在程序的不同部分获取结果。该服务依赖一个 ExecutorSer原创 2015-09-08 23:07:12 · 779 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.9-4.10在执行器中控制任务的完成和取消任务FutureTask
[笔记][Java7并发编程实战手册]系列目录简介在前面都是把需要执行的Runnable或则Callable提交给线程池,让线程池来管理任务的生命周期。在本章会学习:怎么取消任务的运行,在任务运行中,任务结束的时候怎么去处理一些事情,比如关闭资源,发送通知等。本章心得继承可取消任务的FutureTask,复写done() 方法。使用done方法来处理任务非正常结束和正常结束的一些操作执行subm原创 2015-09-01 22:36:48 · 1300 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.7-4.8 在执行器中延迟执行或则周期执行任务ScheduledThreadPoolExecutor
[笔记][Java7并发编程实战手册]系列目录看这本书到现在这个章节。我总算是发现了。有些时候一个方法都会开一个章节来讲解。而且还没有什么好东西。 以后要是再有类似的章节。我就直接合在一起得了。简介 newScheduledThreadPool:创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。 它可以实现延迟或则周期执行任务。 在线程池中,发送一个任务,线程池会按照配置原创 2015-08-31 22:32:17 · 1266 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]5.Fork\Join(Java1.7新特性)框架
Fork/Join框架本掌包含: 1. 创建Fork/Join线程池 2. 合并任务的结果 3. 异步运行任务 4. 在任务中抛出异常 5. 取消任务5.1简介 一般在开发简单的并发程序时,会使用Runnable对象,然后创建对应的Thread对象来控制程序中这些线程的创建、执行以及线程的状态。Java1.5引入了ExecutorFramework(Executor和ExecutorSe原创 2015-09-08 23:10:48 · 1819 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]7. 定制并发类
[笔记][Java7并发编程实战手册]系列目录并发集合本章内容包括:定制ThreadPoolExecutor类实现基于优先级的Executor类实现ThreadFactory接口生成定制线程在Executor对象中使用THreadFactory定制运行在定时线程池中的任务通过实现ThreadFactory接口为Fork/Join框架生成定制线程定制运行在Fork/Join框架中的任务原创 2015-10-07 20:00:13 · 1163 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]6.并发集合
[笔记][Java7并发编程实战手册]系列目录并发集合本章内容包括:使用非阻塞式线程安全列表使用阻塞式线程安全列表使用按优先级排序的阻塞式线程安全列表使用带有延迟元素的线程安全列表 推荐:该队列马上解决了我在工作中的一个问题使用线程安全可遍历映射生成并发随机数使用原子变量使用原子数组6.1.简介 说道了并发集合,当然就有不适合在并发情况下的集合,例如:ArrayList就是这样一原创 2015-09-20 18:06:08 · 1385 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]系列目录
推荐学习多线程之前要看的书。 [笔记][思维导图]读深入理解JAVA内存模型整理的思维导图文章里面的思维导图或则对应的书籍。去看一遍。能理解为什么并发编程就会出现问题。 Java7并发编程实战手册 这一本实战的书籍。本笔记记录是看了该书。随笔的一些笔记,和在实际动手敲示例的过程中总结出来的一点经验,大部分是内容是书籍上总结的,还有一大部分是自己实践中总结的。本博客中大部分章节或许都不是书籍上的原d原创 2015-08-11 22:29:50 · 3870 阅读 · 4 评论 -
[笔记][Java7并发编程实战手册][后补]1.线程管理
[笔记][Java7并发编程实战手册]系列目录本章 是补充章节(学的时候跳过了这一章节),简单的就不写程序了.直接把笔记总结.本章内容包括线程的创建和运行线程信息的获取和设置线程的中断线程中断的控制线程的休眠和恢复等待线程的终止守护线程的创建和运行线程中不可空异常的处理线程局部变量的使用线程的分组线程组中不可空异常的处理使用工厂类创建线程1.1.简介并发(Concurre原创 2015-10-14 22:48:43 · 1211 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.2 创建线程执行器newCachedThreadPool无界线程池
[笔记][Java7并发编程实战手册]系列目录简介在jdk api中的介绍如下一部分,其他的请查看api文档 ThreadPoolExecutor是一个一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增原创 2015-08-24 22:27:55 · 4127 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.5-4.6 运行多个任务并处理第一个结果/所有结果ThreadPoolExecutor
[笔记][Java7并发编程实战手册]系列目录简介 看到这个标题的时候,我也很纳闷,因为没有明白所表达的意思。 ok,并发编程比较常见的一个问题是:当采用多个并发任务来解决一个问题的时候,往往只需要关心这个任务的第一个结果,例如:验证一个算法的时候,假如一个执行5个算法,那么最先返回结果的,就是最快的。在本章将会学习,如何使用ThreadPoolExecutor来实现类似场景;本章Threa原创 2015-08-30 21:09:11 · 2898 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.4 在执行器中执行任务并返回结果Callable、Future
[笔记][Java7并发编程实战手册]系列目录简介 执行框架(Executor Framework)的优势之一就是,可以在运行并发任务的时候返回结果。但是需要以下两个类来实现功能: 1. 接口 Callable<V> 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 Callable 接口类似于 Runnable,两者都是为那些其实例可原创 2015-08-30 20:06:55 · 1345 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.5 在集合点的同步CyclicBarrier循环barrier
[笔记][Java7并发编程实战手册]系列目录CyclicBarrier详细原理解说,可先查看别人的博客:http://www.cnblogs.com/skywang12345/p/3533995.html简介CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称原创 2015-08-22 17:46:10 · 1357 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.8 并发任务间的数据交换Exchanger
[笔记][Java7并发编程实战手册]系列目录简介 Exchanger 是一个同步辅助类,用于两个并发线程之间在一个同步点进行数据交换。 允许两个线程在某一个点进行数据交换。本章exchanger 使用心得总结两个线程必须使用同一个Exchanger对象,且只能是两个线程间的数据交换exchanger.exchange(v)的时候,当前线程会被阻塞,直到另一个线程执行该方法,同时完成数据原创 2015-08-23 22:15:46 · 1068 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]第三章-线程同步辅助类-3.1概要
[笔记][Java7并发编程实战手册]系列目录有点着急了,没有太注重质量,自己也没有理解透,从本章起,读书和随笔笔记的质量会更好。第三章在本章中,我们将学习:1. 资源的并发访问控制 2. 资源的多副本的并发访问控制 3. 等待多个并发事件的完成 4. 在集合点的同步 5. 并发阶段任务的运行 6. 并发阶段任务中的阶段切换 7. 并发任务间的数据交换回顾在第二章中主要学习了以下接口s原创 2015-08-13 21:43:22 · 1305 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.7 并发阶段任务中的阶段切换phaser
[笔记][Java7并发编程实战手册]系列目录简介 本章主要学习phaser中的阶段切换。在一些场景中,从当前阶段切换到下一阶段过度的时候执行一些操作,那么本章的知识就用上了。 在phaser中,有一个onAdvance方法, 该方法在参与者数量为0的时候,返回true,来表示该phaser状态为终止状态。 下面是默认的处理,还有一个phase参数没有用到,我们可以覆写该方法,通过判断原创 2015-08-23 20:32:36 · 1396 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]2.5使用Lock实现同步一
lock详细解说请参考:Java多线程系列–“JUC锁”01之 框架lock接口是同步代码块的另一种机制,比synchronized关键字更强大也更灵活提供了许多新功能,例如:tryLock()方法,这个方法试图获取锁,如果锁已被其他线程获取,它将返回false并往下继续执行代码。而使用synchronized,如果线程A试图执行一个同步代码块,如果B线程已经在执行这个代码块了,线程A将被挂起。原创 2015-08-09 16:45:01 · 960 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]4.3 创建固定的线程执行器newFixedThreadPool线程池
[笔记][Java7并发编程实战手册]系列目录简介 newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。newCachedThreadPool()创建的线程池的特性是:自动回收不使用原创 2015-08-25 21:53:32 · 5629 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]2.2使用syncronized实现同步方法
[笔记][Java7并发编程实战手册]系列目录学习多线程之前,我觉得很有必要去学习下 [笔记][思维导图]读深入理解JAVA内存模型整理的思维导图基础知识锁除了让临界区互斥执行外, 还可以让释放锁的线程向获取同一个锁的线程发送消息当线程获取锁时,JMM会把该线程对应的本地内存置为无效。 从而使得监视器保护的临界区代码必须要从主内存中去读取共享变量。当线程释放锁时,JMM会把该线程对应的本原创 2015-08-08 12:10:26 · 1400 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]2.4在同步代码中使用条件-生产者与消费者
说明在并发编程中一个典型的问题是生产者–消费者问题。在程序中,有可能会需要用到两个线程通信的情况,比如生产者消费者中,获取一个共享数据,有就消费。没有就等待着生产者生产之后再继续消费。那么这个实现过程就可以使用wait();notify();notifyAll()来达到效果; 以上方法详细解说请查看: Java多线程系列–“基础篇”05之 线程等待与唤醒例子/** * Created by zh原创 2015-08-08 17:40:35 · 973 阅读 · 0 评论 -
Java多线程系列--“JUC锁”06之 Condition条件
Java多线程系列-目录 [笔记][Java7并发编程实战手册]系列目录概要前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍Condition介绍Condition的作用是对锁进行更精确的控制。 Condition中的await()方法相当于Object的wait()方法, Condition中的signal()方法相当于Object的noti转载 2015-08-12 15:03:48 · 683 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]2.5使用Lock实现同步二
概要接上一篇文章,练习修改锁的公平性,和在所中使用条件。修改锁的公平性ReentrantLock /** *构造一个锁对象,默认为非公平锁 */ public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); }根据Reentrant原创 2015-08-11 22:21:20 · 1259 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.2 资源的并发访问控制Semaphore信号量
[笔记][Java7并发编程实战手册]系列目录简介本文学习信号量Semaphore机制。Semaphore本质是一个共享锁内部维护一个可用的信号集,获取信号量之前需要先申请获取信号数量;用完之后,则需要释放信号量;如果不释放,那么其他等待线程则一直阻塞直到获取信号量或则被中断为止本人的理解是:互斥锁是同一时间只能一个线程访问,而在这里,是同一时间允许获取到了信号量的线程并发访问,而没有获取到信原创 2015-08-13 21:58:02 · 1176 阅读 · 0 评论 -
[笔记][Java7并发编程实战手册]3.4 等待多个并发事件的完成CountDownLatch倒计数闭锁
[笔记][Java7并发编程实战手册]系列目录简介本文学习CountDownLatch 倒计时闭锁。 本人英文不好,靠机器翻译,然后有一段很形象的描述,让我把它叫为倒计时 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现原创 2015-08-19 21:50:15 · 1389 阅读 · 0 评论