说到handler大家都很熟悉,自己也用了很久,再此总结一下。涉及到的内容:
Loop
Message
MessageQueue
ThreadLocal
Hadnler
这些东西还是挺多的。那么我们先看一个栗子吧
public class MainActivity extends Activity {
private static final String TAG = "MainActivi...
分类:
其他好文 时间:
2016-05-09 20:44:02
阅读次数:
286
ThreadLocal是什么? 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程” ...
分类:
其他好文 时间:
2016-05-05 15:53:13
阅读次数:
223
1.Thread类中有一个叫 threadLocals的变量 ThreadLocal.ThreadLocalMap threadLocals = null; threadLocals 是ThreadLocalMap类型的,ThreadLocalMap 是ThreadLocal的一个内部类。 源码中这 ...
分类:
其他好文 时间:
2016-05-05 12:29:00
阅读次数:
126
ThreadLocal可以定义线程范围的变量,也可以称之为线程局部变量。与一般的变量的区别在于,生命周期是在线程范围内的。 也就是说某个类的某个对象(为清晰描述,以下称A对象)里面有个ThreadLocal变量, 那么每开一个线程,在线程中第一次调用A对象,都会先初始化该变量的值,并且不会对其他线程 ...
分类:
编程语言 时间:
2016-05-05 11:03:49
阅读次数:
194
一、RTFSC
java.lang.ThreadLocal的具体实现
那么到底ThreadLocal类是如何实现这种“为每个线程提供不同的变量拷贝”的呢?先来看一下ThreadLocal的set()方法的源码是如何实现的:
[java]
view plain
copy
print?
/** * Sets the current thr...
分类:
编程语言 时间:
2016-05-03 18:20:25
阅读次数:
232
1、请解释下在单线程模型中Message,Handler,Message Queue,Looper之间的关系。 拿主线程来说,主线程启动时会调用Looper.prepare()方法,会初始化一个Looper,放入Threadlocal中,接着调用Looper.loop()不断遍历Message Qu ...
分类:
移动开发 时间:
2016-05-03 09:21:07
阅读次数:
156
ThreadLocal为每个使用该变量的线程提供独立的变量副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
对比同步机制与ThreadLocal,可以得出同步通过加锁的方式实现了线程数据共享,也就是以时间换空间,而Th...
分类:
编程语言 时间:
2016-04-29 19:57:18
阅读次数:
200
Service层处理事务(利用ThreadLocal),TxQueryRunner小工具,单表练习(增删改查操作)...
分类:
Web程序 时间:
2016-04-29 01:43:34
阅读次数:
262
ThreadLocal为每个使用该变量的线程提供独立的变量副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
对比同步机制与ThreadLocal,可以得出同步通过加锁的方式实现了线程数据共享,也就是以时间换空间,而Th...
分类:
编程语言 时间:
2016-04-26 21:54:52
阅读次数:
206
这个类在java1.2中就出现了,线程独有的变量(每个线程都有一份变量),使用它的好处之一就是可以少传许多参数。 在哪里用到它呢?有连接池的地方就有它的身影,连接池包括数据库连接池,网络连接池等。 输出结果: f :6c71fba2-8fd6-4de9-88f9-69023290e213f :c31 ...
分类:
其他好文 时间:
2016-04-24 11:03:59
阅读次数:
122