Java 7 Concurrency Cookbook
往前的
这个作者很懒,什么都没留下…
展开
-
synchronized重入锁实例(简单)
目录1、重入锁2、例子2.1、设计思路2.2 A.java2.3 B.java2.4 C.java2.5、打印结果总结 目的 为了证明线程获取到对象锁之后该对象不会被释放掉直到当前线程执行完,其他线程才可以获取这些对象的锁 1、重入锁 一个线程调用synchronized修饰的方法时会获取到该对象锁,当前线程再次获取到该对象锁,表现锁的重入性。 2、例子 2.1、设计思路 设计思路: * 有...原创 2020-01-11 20:34:08 · 468 阅读 · 0 评论 -
第七章 Customizing Concurrency Classes(自定义并发类)【下】
本章涉及内容: 自定义ThreadPoolExecutor类实现基于优先级Executor类实现ThreadFactory接口生成自定义线程在Executor对象中使用自定义ThreadFactory在计划线程池运行自定义任务通过实现ThreadFactory接口为Fork/Join框架生成自定义线程在Fork/Join框架运行自定义任务实现自定义锁类基于优先级实现传输队列实现自己的原子对象原创 2017-08-23 16:58:52 · 299 阅读 · 0 评论 -
第三章 Thread Synchronization Utilities(线程同步工具类)【上】
涉及内容: 控制并发获取资源 控制并发获取多份copy资源 等待多个并发事件 在公共点同步任务 运行并发多阶段任务 控制阶段并发阶段任务 k原创 2017-08-14 17:12:40 · 277 阅读 · 0 评论 -
第三章 Thread Synchronization Utilities(线程同步工具类)【下】
涉及内容: 控制并发获取资源控制并发获取多份copy资源等待多个并发事件在公共点同步任务运行并发多阶段任务在阶段任务中控制阶段变化在并发任务之间改变数据 1、运行并发多阶段任务 如果你玩过恐龙快打,这个有点类似,就是两个用户必须要同时打完这个关然后一起进入下一关,否则会一直在那里等着。 例子:删除超过24小时的日志文件,分为三步: 1、得到以.log为后缀的所有文件2、判断创原创 2017-08-14 21:50:16 · 284 阅读 · 0 评论 -
第八章 Testing Concurrent Applications(测试并发应用)【下】
本章涉及内容: 监控Lock接口监控Phaser类监控一个Executor框架监控Fork/Join线程池写有效的日志用FindBugs分析并发代码配置Eclipse调试并发代码用MultithreadTC测试并发代码 1、写有效的日志信息 利用java.util.logging包为你并发应用添加日志信息原创 2017-08-25 12:59:00 · 474 阅读 · 0 评论 -
第八章 Testing Concurrent Applications(测试并发应用)【上】
本章涉及内容: 监控Lock接口监控Phaser类监控一个Executor框架监控Fork/Join线程池写有效的日志用FindBugs分析并发代码配置Eclipse调试并发代码用MultithreadTC测试并发代码 1、简介 并发测试的不同的是你很难重现之前的错误或者异常。 2、监控Lock接口 package com.jack; import java.util.Co原创 2017-08-24 21:41:28 · 575 阅读 · 0 评论 -
第七章 Customizing Concurrency Classes(自定义并发类)【上】
本章涉及内容: 自定义ThreadPoolExecutor类实现基于优先级Executor类实现ThreadFactory接口生成自定义线程在Executor对象中使用自定义ThreadFactory在计划线程池运行自定义任务通过实现ThreadFactory接口为Fork/Join框架生成自定义线程在Fork/Join框架运行自定义任务实现自定义锁类基于优先级实现传输队列实现自己的原子原创 2017-08-21 15:53:26 · 251 阅读 · 0 评论 -
第六章 Concurrent Collections (并发集合类) 【下】
本章涉及内容: 使用非阻塞、线程安全lists集合使用阻塞、线程安全lists集合通过优先级确定顺序来使用阻塞式线程安全lists集合通过延迟元素来使用线程安全lists集合使用线程安全导航maps集合生成一个并发随机数使用原子变量使用原子数组 1、使用线程安全导航maps集合 ConcurrentSkipListMap 实现了ConcurrentNavigableMap接口,它使用了S原创 2017-08-19 19:43:28 · 431 阅读 · 0 评论 -
第六章 Concurrent Collections (并发集合类) 【上】
本章涉及内容: 使用非阻塞、线程安全lists集合使用阻塞、线程安全lists集合通过优先级确定顺序来使用阻塞式线程安全lists集合通过延迟元素来使用线程安全lists集合使用线程安全导航maps集合生成一个并发随机数使用原子变量使用原子数组 1、简介 数据结构是程序最基础的元素。Java API提供java 集合框架来管理数据,当你在选择集合类要特别小心,有些集合类并不支持并原创 2017-08-19 16:41:37 · 1489 阅读 · 0 评论 -
第二章 Basic Thread Synchronization (基础线程同步) 【下】
涉及的内容 同步一个方法同步类中分配一个独立属性在同步代码中使用条件使用Lock锁定代码块同步数据的读写锁修改Lock公平模式在Lock中使用多条件 1、同步数据的读写锁 ReadWriteLock接口 和 ReentrantReadWriteLock类 例子:使用ReadWriteLock接口获取一个存储两个产品的价格 package com.jack; import java.原创 2017-08-12 18:25:28 · 197 阅读 · 0 评论 -
第二章 Basic Thread Synchronization (基础线程同步) 【上】
涉及的内容 同步一个方法同步类中分配一个独立属性在同步代码中使用条件使用Lock锁定代码块同步数据的读写锁修改Lock公平模式在Lock中使用多条件 简介 同步类似就是车过收费站,一杆一车,排队出收费站,不许并行。 对于同步的代码块称为critical section (临界断面) 为了实现这个同步将会介绍两种同步方法: 关键字:synchronizedLock的接原创 2017-08-12 15:50:38 · 511 阅读 · 0 评论 -
第一章 Thread Management(线程管理) 下
涉及内容 创建和运行一个线程获取和设置线程信息打断一个线程控制打断的线程休眠和唤醒线程等待线程的终止创建和运行守护线程处理线程中不受控制的异常使用local thread变量将线程加入组处理线程组的不受控制的异常通过工厂创建线程 1、使用local thread变量 线程之间共享变量或者不共享变量 例子:local thread 变量机制 外部变量 package com.原创 2017-08-11 21:12:10 · 344 阅读 · 0 评论 -
第一章 Thread Management(线程管理) 中
涉及内容 创建和运行一个线程获取和设置线程信息打断一个线程控制打断的线程休眠和唤醒线程等待线程的终止创建和运行守护线程处理线程中不受控制的异常使用local thread变量将线程加入组处理线程组的不受控制的异常通过工厂创建线程 1、休眠和唤醒线程 例子:使用sleep()方法写一个真实的日期 import java.util.Date; import java.util.conc原创 2017-08-11 19:31:20 · 340 阅读 · 0 评论 -
第一章 Thread Management(线程管理) 上
涉及内容: 创建和运行一个线程获取和设置线程信息打断一个线程控制打断的线程休眠和唤醒线程等待线程的终止创建和运行守护线程处理线程中不受控制的异常使用local thread变量将线程加入组处理线程组的不受控制的异常通过工厂创建线程 1、简介 并发(concurrency):多线程运行在单核处理器,执行顺序--无序 并行(parallelism) :多线程运行在多核处理,执行顺序原创 2017-08-11 16:05:16 · 339 阅读 · 0 评论 -
第五章 Fork/Join Framework(Fork/join 框架)【下】
本章涉及的内容: 创建一个Fork/Join 池插入任务的结果同步运行任务在任务中抛出异常取消一个任务 1、在任务中抛出异常 package com.jack; import java.util.concurrent.RecursiveTask; import java.util.concurrent.TimeUnit; public class Task extends Recur原创 2017-08-18 16:16:45 · 225 阅读 · 0 评论 -
第五章 Fork/Join Framework(Fork/join 框架)【上】
本章涉及的内容: 创建一个Fork/Join 池插入任务的结果同步运行任务在任务中抛出异常取消一个任务 1、简介 问题来了,Fork/Join为啥需要存在? 前面Executor已经解决线程管理的问题,为甚还有Fork/Join框架?打个比方,公司管理,刚开始只要六七人,一个管理员就够了,随着人员的增加多管理难度越来越大,那应该怎么办呢?按部门分开管理,比如财务部,后勤部,策划部原创 2017-08-18 14:46:05 · 259 阅读 · 0 评论 -
第四章 Thread Executors(Executors多线程架构)【下】
本章涉及内容: 创建一个executor线程创建一个固定大小executor执行executor任务返回一个结果处理多任务和处理第一个结果处理多任务和处理所有结果延迟之后运行executor周期地运行任务的executor在executor取消任务在executor控制任务完成在executor分开task启动和处理结果控制executor的拒绝的任务 1、在executor控制任务完成之原创 2017-08-16 16:46:57 · 626 阅读 · 0 评论 -
第四章 Thread Executors(Executors多线程架构)【中】
本章涉及内容: 创建一个executor线程创建一个固定大小executor执行executor任务返回一个结果处理多任务和处理第一个结果处理多任务和处理所有结果延迟之后运行executor周期地运行任务的executor在executor取消任务在executor控制任务完成在executor分开task启动和处理结果控制executor的拒绝的任务 1、处理多任务和处理所有结果 实现原创 2017-08-16 12:17:24 · 216 阅读 · 0 评论 -
第四章 Thread Executors(Executors多线程架构)【上】
本章涉及内容: 创建一个executor线程创建一个固定大小executor执行executor任务返回一个结果处理多任务和处理第一个结果处理多任务和处理所有结果延迟之后运行executor周期地运行任务的executor在executor取消任务在executor控制任务完成在executor分开task启动和处理结果控制executor的拒绝的任务 简介: executor是原创 2017-08-16 10:32:20 · 384 阅读 · 0 评论