39-使用线程本地变量
1.9 使用线程本地变量
对于并发应用程序来说,数据共享是非常重要的一个方面。对于继承 Thread
类或者实现 Runnable
接口的类来说,在两个或多个线程间共享数据是极其重要的。
如果创建了实现 Runnable
接口的类对象,并用多个线程对象来执行该任务对象,那么所有线程都能够共享该任务对象的属性。这意味着,如果在一个线程中更改了该任务对象的属性,那么其他线程也会受到相应影响。
有时希望多线程同时执行一个任务的实例时,能够独享一个变量。为此Java并发API中的 线程本地变量 (thread-local variable)提供了良好的支持。只要线程存活,线程本地变量就会一直存在,因此该机制也存在一些缺点。比如,在一些线程复用的场景下,这就可能产生问题。
本节将会实现两个案例:第一个案例实现第一段中描述的问题;第二个案例使用线程本地变量来解决这个问题。