- 博客(7)
- 资源 (20)
- 问答 (4)
- 收藏
- 关注
原创 从头认识多线程-4.4 ThreadLocal的实现原理
从头认识多线程-4.4 ThreadLocal的实现原理这一章节我们来讨论一下ThreadLocal的实现原理。1.ThreadLocal的存储一般可以认为是ThreadLocalMap这个内部类来存储,但是如果更加深入一层,其实他的存储是Entry类的可变数组,这个跟HashMap的存储比较相似2.为什么在使用ThreadLocal的时候需要初始化?ThreadLocal的初始化源码: /**
2016-06-20 14:19:15 1553 1
原创 从头认识多线程-4.3 ThreadLocal使用时需要注意的地方
4.3 这一章节我们来讨论一下关于ThreadLocal的使用的时候需要注意的地方ThreadLocal主要的使用是get、set、initialValue这几个方法,具体的使用我们这里不做介绍,下面只是举一些它使用的时候需要注意的地方。1.在get方法的时候出现nullpackage com.ray.deepintothread.ch04.topic_3;public class ThreadLo
2016-06-17 15:47:21 6340
原创 从头认识多线程-4.2 对象逸出的其他解决方案-主要是ThreadLocal的应用
这一章节我们来讨论一下对象逸出的其他解决方案。1.由于出现对象逸出都是在多线程环境下,那么,我们换成单线程即可,当然,这个方法基本没有人使用, 因为现在都是多核处理器,为了提升性能,不可能使用单核,但是下面我也给出例子吧。package com.ray.deepintothread.ch04.topic_2; public class Ad_hoc { private int id = 0;
2016-06-12 23:00:07 3477
原创 从头认识多线程-4.1 对象的发布(Publish)、逸出(Escape)以及逸出的解决方案
这一章节我们来讨论一下对象的发布与逸出。其实在前两个章节我们都有想应的讨论,只不过有一些不用补充的问题,我将会放到这个章节里面去。1.发布(Publish)当一个对象能够给其他代码引用。package com.ray.deepintothread.ch04.topic_1; import java.util.HashMap; public class Publish { private Ha
2016-06-11 21:45:25 4592 2
原创 从头认识多线程-3.3 synchronized某些解决不了的可视性问题,只能使用volatile来解决
这一章节我们讨论一下synchronized不但具备操作的同步性,还具备volatile的可视性。1.引入之前的异步死循环代码:package com.ray.deepintothread.ch03.topic_3; public class DeadForAsychn { public static void main(String[] args) throws InterruptedEx
2016-06-08 11:52:29 3333
原创 从头认识多线程-3.2 使用volatile声明的变量的写操作是非原子性的
这一章节我们来讨论一下使用volatile声明的变量的各种操作是非原子性的。1.上一章节我们已经提到,volatile把工作内存里面变量的改变同步到主内存, 使得各个线程能够把该变量当成是整体的状态控制2.但是,使用volatile声明的变量的写操作是非原子性的代码清单:package com.ray.deepintothread.ch03.topic_2; public class Volat
2016-06-06 22:19:39 3975
原创 从头认识多线程-3.1 使用volatile解决异步死循环
这一章节我们来讨论一下使用volatile解决异步死循环。1.在讨论上面的问题前,我们引入另一个例子:同步死循环代码清单:package com.ray.deepintothread.ch03.topic_1; public class DeadFor { private boolean isStop = false; public boolean isStop() { return
2016-06-06 10:44:52 4193
Mastering Python Design Patterns 精通python设计模式
2015-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人