- 博客(7)
- 资源 (4)
- 收藏
- 关注
原创 java并发编程day08
5.4 阻塞和可中断的方法线程可能会因为几种原因被阻塞或暂停: - 等待I/O操作结束 - 等待获得一个锁 - 等待从Thread.sleep中唤醒 - 等待另一个线程的计算结果当一个线程阻塞时,他通常被挂起,并被设置为线程阻塞的某个状态。 一个阻塞的操作和一个普通的操作之间的差别仅仅在于:被阻塞的线程必须要等待一个事件的发生才能继续进行,并且这个事件是超越它自己控制的,因为需要
2017-09-19 15:51:55 452
原创 java并发编程day07
5.3 阻塞队列和生产者-消费者模式阻塞队列blockingqueue提供了可阻塞的put和take方法,他们与可定时的offer和pull是等价的。 如果Queue已经满了,put方法会被阻塞直到有空间可用;如果Queue是空的,那么take方法会被 阻塞,直到有元素可用。Queue的长度可以有限,也可以无限;无限的Queue永远不会满,所以它的 put方法永远不会阻塞。阻塞队列支
2017-09-18 16:30:04 507
原创 java并发编程day06
第五章 构建快5.1 同步容器同步容器分为两部分:一个是vector和hashtable,早期是JDK的一部分;另一个是他们的同系容器,在后面被加入到同步封装类,这些类是由Collections.synchronizedXXX工厂方法提供的,这些类通过封装它们的状态,并对每一个公共的方法进行同步实现线程安全,这样一次只有一个线程能访问到容器的状态5.1.1 同步容器中出现的问题同步块都是线程安全的,
2017-09-15 16:43:57 332
原创 java并发编程day05
4.4向已有的线程安全类添加功能缺少即添加操作(检查再运行)这种操作必须是原子的添加一个新原子的最安全的方式是 修改原始的类以支持期望的操作。另一个方法是扩展这个类。 如下代码所示:@TreadSafepublic class BetterVector<E> extends Vector<E> { public synchronized boolean putIfAbsent(E
2017-09-14 11:34:38 343
原创 java并发编程笔记day04
4.3 委托线程安全4.3.1 范例:试用委托的机动车追踪器public class DelegatingVehicleTracker { private final ConcurrentMap<String,Point> locations; private final Map<String,Point> unmodifiableMap; public Delegating
2017-09-08 16:03:14 403
原创 java并发编程笔记day3
第四章 组合对象4.1 设计线程安全的类在没有进行全局检查的情况下,封装能保证线程的安全性。设计线程安全类的过程包括一下三个基本要素:1确认对象的状态由哪些变量构成的2 确定限制状态变量的不变约束3 制定一个管理并发访问对象状态的策略同步策略定义了对象如何协调对其状态的访问,并且不会违反它的不变约束或后验条。4.1.1 收集同步需求维护类的线程安全就意味着确保在并发访问的情况下,保护它的不
2017-09-05 21:25:30 377
原创 java并发编程笔记day2
第三章3.3.2 栈限制栈限制是线程限制的一种特例,只能通过本地变量才可以触及对象。本地变量使对象更容易被限制在线程本地中,本地变量本身就限制在执行线程中,存在于执行线程。其他线程无法访问这个栈。如下面代码所示,我们的numPairs是基本类型的本地变量,无法利用栈限制,由于无法获得基本类似的引用,所以语言语义确保了基本类型本地变量总是线程封闭的。维护对象引用的栈限制,我们就需要确定引用的对象没
2017-09-02 23:12:00 361
个人书店系统(单机)
2016-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人