threadlocal 的笔记

2020-01-08  本文已影响0人  风一样的牛

ThreadLocal 并不是Thread,是thread的局部变量,应该叫ThreadLocalVariable不知道哪个驴踢的起了个这个名字,就想叫隔壁二大爷家的狗叫“”二大爷“”,搞得大家一头雾水。

ThreadLocal 比不是并发访问一个共同对象,是为每个线程分配一个属于该线程的变量,就是每个线程有有一个副本。

ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get或set方法访问)时能保证各个线程里的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程的上下文。

发明ThreadLocal的初衷是为了提供线程内的局部变量,不是为了解决共享多线程的访问问题,,实际上根本就解决不了,不过很多博客都没说,巴拉巴拉一顿裹脚布的长度,好像很厉害的多线程工具。

这里引用https://www.jianshu.com/p/09ceb962894d的例子。

1. 演化过程

以实际生活中的银行业务办理模型,解释ThreadLocal的诞生过程。读者们可以看到:随着业务模型的不断扩展,代码逻辑变得更加复杂,经过不断优化代码结构的过程,演化出了ThreadLocal这个编程工具

1. 1初始形态

大家去银行办理业务时,如果需要排队等候,则会领取一个排队号,直到叫号才能办理业务。

我们把每一笔业务(Transaction)抽象为一个线程,每一笔业务都有一个唯一的标识(id)。

```java

class Transaction extends Thread

{

privateintid;

publicvoidrun()

{

if(wait)

{

...// Waiting}

else{

...// Start transaction

}

}

}

```java

上一篇 下一篇

猜你喜欢

热点阅读