读书
师程工avaj
这个作者很懒,什么都没留下…
展开
-
Java并发编程实战~笔记~章二
1、线程安全要素:对共享、可变状态的访问操作。 所谓状态,是指存储在状态变量(实例或者静态域)中的数据。对象的状态可能包括其他依赖对象的域。状态是一系列变量的集中体现,比如 int[] data; int size; 该对象的状态就包含两个变量。无状态的类一定是线程安全的。 共享是说这个状态将被多个线程访问。 有共享可变状态的类,如果有写操作,那么一定需要对状态进行全面的同步保护。原创 2013-11-17 16:48:43 · 967 阅读 · 0 评论 -
Java并发编程实战~笔记~章五
2013 1204: 5.1 同步容器类 同步容器类是指使用这种策略进行多线程保护的容器类:访问操作被synchronized修饰,被严格串行化。 比如Vector类和用Collections.synchronizedmap得到的Map。 Vector Vector类的串行化极其严格,无论是修改动作的add方法,还是读取动作的get、size、elementAt等等方法,都直接由sy原创 2013-12-05 00:23:26 · 1118 阅读 · 1 评论 -
Java并发编程实战~笔记~章四
4.2 实例封闭 如果某个对象不是线程安全的,可以通过多种技术使其在多线程程序中安全地使用。比如线程封闭,或者通过一个锁来保护对该对象的所有访问。 实例封闭,就是把一个对象封装到另一个对象里面去,能够访问被封装对象的所有代码路径都是已知的,只要在这些路径上面设置合适的同步策略,就能确保以线程安全的方式来使用非线程安全的对象。 比如这个例子: public class PersonSet {原创 2013-11-26 23:35:52 · 678 阅读 · 0 评论 -
Java并发编程实战~笔记~章三
3.1 可见性 这部分我没怎么看懂。或许是我受限于技术视野,无法找到书中描述的多线程运行的环境。 几个点: 1、重排序。 按书中的说法,重排序并不是一个稀奇的特性,屏蔽重排序细节的方法是——只要是共享的数据,就进行正确的同步。(实际上我从未见过重排序的情况,哪怕根据书中用例进行试验)。 2、失效数据。 这似乎也不是什么很值得提出的点。因为有时共享数据并不需要严格的准确性,比如 whil原创 2013-11-25 20:39:31 · 884 阅读 · 0 评论 -
volatile
关于vilatile关键字,对比了《Java并发编程实战》和《深入理解Java虚拟机》,发现前者是忽悠,即使不是忽悠,也是不清不楚。后者才是真牛逼,还是国人写的,真是厉害啊。 我的结论就是: 1、共享可变的long、double变量如果没有锁保护,就要用vilatile,防止某些虚拟机应用了“非原子性协定”。其他所有地方,可以按建议使用vilatile,也可以不使用。 2、所谓的vilati原创 2013-11-19 00:40:18 · 1940 阅读 · 0 评论 -
杂七杂八
强弱软引用 强引用,原创 2014-04-12 21:33:00 · 494 阅读 · 0 评论