Java多线程之线程封闭(三)
2017-11-29 09:28
399 查看
线程封闭的概念
访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭。实现线程封闭的方法
1:ad-hoc线程封闭
这是完全靠实现者控制的线程封闭,他的线程封闭完全靠实现者实现。也是最糟糕的一种线程封闭。所以我们直接把他忽略掉吧。2:栈封闭
栈封闭是我们编程当中遇到的最多的线程封闭。什么是栈封闭呢?简单的说就是局部变量。多个线程访问一个方法,此方法中的局部变量都会被拷贝一分儿到线程栈中。所以局部变量是不被多个线程所共享的,也就不会出现并发问题。所以能用局部变量就别用全局的变量,全局变量容易引起并发问题。
3:ThreadLocal封闭
使用ThreadLocal是实现线程封闭的最好方法,有兴趣的朋友可以研究一下ThreadLocal的源码,其实我们可以理解ThreadLocal内部维护了一个Map,Map的key是每个线程的名称,而Map的值就是我们要封闭的对象。每个线程中的对象都对应着Map中一个值,也就是ThreadLocal利用Map实现了对象的线程封闭。推荐博客:
https://www.cnblogs.com/digdeep/p/4510875.html
总之,当我们要用线程封闭来避免并发问题的时候,最好使用的就是 【栈封闭】 和 【ThreadLocal】。
相关文章推荐
- Java多线程安全之对象的发布和溢出、线程封闭详解
- java 多线程基础知识3----线程封闭
- Java多线程——线程封闭
- Java多线程-线程封闭
- Java 多线程基础知识之线程封闭
- Java多线程-线程的同步与锁
- 【Java多线程】写入同一文件,自定义线程池与线程回收利用
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- Java多线程-线程的调度(让步)
- Java多线程系列--“基础篇”06之 线程让步
- java多线程-守护线程
- JAVA 多线程摘要--线程启动
- Java多线程:线程间通信之volatile与sychronized
- java,web应用中,关于多用户访问,是不是就是一个用户等于一个线程? 50 那一般的时候是多用户多线程还是多用户单线程。 6S根本停不下来 | 浏览 2065 次 我有更好的答案 发布于2016-
- Java多线程之线程控制(2)
- (46)Java学习笔记——多线程 / 线程的生命周期
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- Java 多线程学习(2)——停止线程
- Java多线程开发系列之四:玩转多线程(线程的控制2)
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞