
java并发
xingxing_zhang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java并发编程--线程池初步
[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.] 服务器应用程序经常需要处理执行时间很短而数目巨大的请求, 如果为每一个请求创建一个新的线程, 会导致一些问题的出现, 如: 1. 性能瓶颈. 线程的创建和销毁需要执行大量的后台操作, 如果单个请求的执行时间很短, 有可能花在创建和销毁线程上的时间大于真正执行请求的时间. 2. 可能会导致资源不足. 大量的...2011-11-06 02:20:39 · 180 阅读 · 0 评论 -
中断线程--JCIP7.1读书笔记
[本文是我对Java Concurrency In Practice 7.1的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 启动线程之后, 大多数时候我们等待线程运行完成后自动结束. 但是有时我们希望可以提前终止线程的运行: 1. 用户申请取消时. 比如用户点击了取消按钮. 2. 时间限制的任务. 有些任务具有时间限制, 如果在一定的时间内仍然没有得到想要的结...2012-04-05 14:03:25 · 151 阅读 · 0 评论 -
处理InterruptedException异常--JCIP7.1读书笔记
[本文是我对Java Concurrency In Practice 7.1的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 在java的中断机制中, InterruptedException异常占据重要的位置. 处理InterruptedException异常的方式有: 1. 不catch直接向上层抛出, 或者catch住做一些清理工作之后重抛该异常...2012-04-05 14:08:13 · 310 阅读 · 0 评论 -
处理不可中断的阻塞-JCIP7.1读书笔记
[本文是我对Java Concurrency In Practice 7.1的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 并不是所有的阻塞都是可中断的, 比如InputStream.read方法. 在检测到输入数据可用, 到达流末尾或者抛出异常前, 该方法一直阻塞. 而且阻塞的时候不会检查中断标记, 所以中断线程无法使read从阻塞状态返回. 但是关闭流可以使得...2012-04-06 10:23:43 · 322 阅读 · 0 评论 -
停止基于线程的Service--JCIP7.2读书笔记
[本文是我对Java Concurrency In Practice 7.2的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 以ExecutorService为例, 该类内部封装有多个线程, 类外部无法直接停止这些线程. 相反, 外部调用Service的shutDown和shutDownNow方法关闭Service, 而Service负责停止其拥有的线程. 大多数...2012-04-06 10:28:45 · 128 阅读 · 0 评论 -
配置ThreadPoolExecutor
[本文是我对Java Concurrency In Practice C08的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] Executors的静态方法newCachedThreadPool, newFixedThreadPool, newScheduledThreadPool所返回的线程池都是ThreadPoolExecutor对象或者其子类对象. Thread...2012-04-09 10:34:27 · 195 阅读 · 0 评论 -
task与execution--JCIPC08读书笔记
[本文是我对Java Concurrency In Practice C08的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] task和线程池执行机制之间隐式的耦合 前面曾提到过, 线程池的应用解耦了task的提交和执行. 事实上, 这有所夸大, 因为不是所有的task都适用于所有的执行机制, 某些task要求在特定的线程池中执行: 1. 非独立task, 指的...2012-04-09 10:34:39 · 214 阅读 · 0 评论 -
如何避免死锁--JCIPC10读书笔记
[本文是我对Java Concurrency In Practice C10的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 如果多个线程以不同的顺序持有多个锁, 可能发生死锁: public class AccountTrans { public void transferMoney(Account fromAccount, Account toA...2012-04-10 10:08:37 · 132 阅读 · 0 评论 -
改善并发程序的可扩展性--JCIP C11读书笔记
[本文是我对Java Concurrency In Practice C11的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 可扩展性和Amdahl's law--阿姆达尔定律 Scalability describes the ability to improve throughput or capacity when additional resourc...2012-04-10 14:40:17 · 142 阅读 · 0 评论 -
内置锁和显式锁的区别--JCIP C13读书笔记
[本文是我对Java Concurrency In Practice C13的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 任何java对象都可以用作同步的锁, 为了便于区分, 将其称为内置锁. JDK5.0引入了显式锁: Lock及其子类(如ReentrantLock, ReadWriteLock等). 内置锁和显式锁的区别有: 1. 可中断申...2012-04-11 10:17:21 · 303 阅读 · 0 评论 -
改善并发性能--JCIP6.3读书笔记
[本文是我对Java Concurrency In Practice 6.3的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 浏览器的页面渲染模块负责HTML标记的处理, 本文以页面渲染为例探讨线程与并发. 为了简化问题, 我们假设只包含文本标记和图片标记. 单线程渲染 使用单线程处理是最简单的方式: 从头至尾扫描HTML文件, 如果遇到文本标记...2012-04-02 11:51:01 · 102 阅读 · 0 评论 -
Executor--JCIP C06读书笔记
[本文是我对Java Concurrency In Practice 6.1/6.2的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 为什么需要使用线程池? one-thread-per-request可能带来的问题: 1. 线程的创建和销毁会占用一定的资源. 如果请求频繁而对请求的处理是轻量级的(大多的web请求符合该情形), 创建一个线程处理请求后将其销...2012-04-02 09:28:23 · 111 阅读 · 0 评论 -
设计高效的线程安全的缓存--JCIP5.6读书笔记
[本文是我对Java Concurrency In Practice 5.6的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 几乎每一个应用都会使用到缓存, 但是设计高效的线程安全的缓存并不简单. 如: public interface Computable<A, V> { V compute(A arg) throws Interrup...2012-04-01 22:49:31 · 124 阅读 · 0 评论 -
java并发编程--一道经典多线程题的2种解法
coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.] 问题的描述 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20....以此类推, 直到打印到75. 程序的输出结果应该为: 线程1: 1 线程1: 2 线程...2011-11-06 14:10:56 · 388 阅读 · 0 评论 -
java并发编程--互斥锁, 读写锁及条件
[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.] java.util.concurrent.locks包提供了锁和等待条件的接口和类, 可用于替代JDK1.5之前的同步(synchronized)和监视器机制(主要是Object类的wait(), notify(), notifyAll()方法). 互斥锁--Lock接口及其实现类Reen...2011-11-07 00:03:30 · 512 阅读 · 0 评论 -
Race condition--Java Concurrency In Practice C02读书笔记
[本文是我对Java Concurrency In Practice第二章的归纳和总结, 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 多线程环境下,无需调用方进行任何同步处理也能保证正确性的类是线程安全的类 无状态的对象是线程安全的。无状态是指没有成员变量。由于方法的局部变量都是在线程私有的栈中分配的,因此在一个线程中调用无状态对象的方法,不会影响到其他线程。 ...2012-03-26 10:17:30 · 263 阅读 · 0 评论 -
变量可见性和volatile, this逃逸, 不可变对象, 以及安全公开--Java Concurrency In Practice C03读书笔记...
[本文是我对Java Concurrency In Practice第三章的归纳和总结, 也有部分语句摘自周志明所著的"深入理解java虚拟机". 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 线程安全包含2个方面: 原子性和可见性, java的同步机制都是围绕这2个方面来确保线程安全的. 可见性 理解可见性首先要清楚为什么多线程环境下会有可见性问题. 现代CP...2012-03-26 21:55:22 · 213 阅读 · 0 评论 -
利用对象限制和委托构建线程安全的类--Java Concurrency In Practice C04读书笔记
[本文是我对Java Concurrency In Practice第三章的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 设计线程安全的类需要考虑: 1. 确定组成对象状态的变量. 2. 确定约束对象状态的不变式. 3. 建立并发访问对象状态的规则. 后置条件: 由于某些变量的取值是有限制范围的, 改变状态变量之后需要检查改变后的状态是否合法. 后...2012-03-27 18:23:57 · 131 阅读 · 0 评论 -
线程安全的集合类--Java Concurrency In Practice C05读书笔记
[本文是我对Java Concurrency In Practice 5.1的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] synchronized集合 java集合框架提供了多种synchronized集合, 比如Vector, HashTable, Collections的synchronizedXxx方法的返回值等. synchronized集合是线...2012-03-28 18:26:48 · 201 阅读 · 0 评论 -
ConcurrentHashMap和CopyOnWriteArrayList--Java Concurrency In Practice C05读书笔记
[本文是我对Java Concurrency In Practice 5.2的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] ConcurrentHashMap类 我们可以使用Collections.synchronizedMap()方法包装HashMap得到线程安全的Map, 但是如前所述, 这样会带来很大的性能损失. JDK5之后我们有了新的选择--Concu...2012-03-31 11:27:17 · 127 阅读 · 0 评论 -
使用BlockingQueue构建生产者消费者模式--JCIP5.3读书笔记
[本文是我对Java Concurrency In Practice 5.3的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] 生产者消费者模式 以缓冲区作为生产者和消费者之间沟通的桥梁: 生产者只负责生产, 将生产出来的数据存入缓冲区. 而消费者只负责消费, 不断的从缓冲区中取出数据进行处理. 生产者消费者模式是非常常用的, 因为应用该模式有效的解耦了生产者和...2012-03-31 17:32:40 · 126 阅读 · 0 评论 -
synchronizer--JCIP5.5读书笔记
[本文是我对Java Concurrency In Practice 5.5的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] Synchronizers synchronizer是指那些根据状态协调线程的对象. BlockingQueue就是一个典型的synchronizer: 当队列为空时, 取数据的消费者线程将被阻塞, 直到队列不为空; 当队列满时, 存入数...2012-04-01 22:44:05 · 110 阅读 · 0 评论 -
状态依赖的类--JCIP C14.1读书笔记
[本文是我对Java Concurrency In Practice C14.1的归纳和总结. 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正. ] java类库中包含许多状态依赖的类: 其中的某些方法只有满足特定的前置条件才能继续, 比如BlockingQueue的take方法, 只有队列不为空时take方法才能返回. 状态依赖的操作一般如下: void blockingA...2012-04-11 10:24:02 · 171 阅读 · 0 评论