-----------android培训、java培训、java学习型技术博客、期待与您交流!----------
ThreadLocal叫做线程局部变量,目的在于封装一个线程范围内的共享数据。其实,ThreadLocal模拟的是一个Map类,它的键值存的是当前线程,它的值则是存的当前线程的数据,那么不同的线程所取的数据当然不同。我们用ThreadLocal来做一个实际对象的时候,它自动的存储当前的线程,当我们存储一个值的时候。那么,当我们需要创建一个线程的共享数据的时候,数据量不一定很小,所以我们需要用一个类来封装我们的数据,这里就有一种优雅的方式,将ThreadLocal封装在我们存储数据的类中,作为类的使用者,我们不用关心怎么实现了线程范围类的数据共享的实现细节,我们只需要知道我们用这个类存储的数据它是线程范围类的共享数据即可。这样一种的思想主要用于客服访问的服务器中,当每个客服访问一个服务器的时候,服务器就相当于new出了一个新的线程为客户服务,当然这个线程内的数据可以共享,但是不能被其他线程所操作。
对于事件的监听机制,在java中有大量的运用,其实在学习单片机的时候感觉也有类似的思想,比如:单片机的中断的方式有很多种,现在单片机的中断都采用类似的监听机制来监控中断,当中断借口有变化时,中断借口会发出一个电平信号来通知cpu,而并非cpu时刻来监听着中断接口。在GUI一章中,最为重要的也是事件监听机制,应为不同的图形可以有不同的监听器来监听这些图形上的不同动作,当图形上有动作发生的时候,那么就会有相应的监听事件对象发送给监听器类的对象上。对于Runtime这个类也有类似的机制,就是当虚拟机停止工作的时候,会产生一个Runtime本身的一个实例,这个时候可以用这个实例调用它的AddShutdownHook(Thread hook)方法来处理在虚拟机结束的时候,安排给虚拟机干的一些代码写入到Thread hook中即可。