1
AoEiuV020CN 2022-10-19 10:56:38 +08:00
不明白你说的 map ,是指所有线程共用一个 map 然后 thread 当 key 吗?这样共用 map 不就有线程冲突的可能了,不等价吧,
|
2
asfdsafdas OP @AoEiuV020CN
我的理解大概这个意思 [![xs3w5Q.png]( https://s1.ax1x.com/2022/10/19/xs3w5Q.png)]( https://imgse.com/i/xs3w5Q) |
3
zxCoder 2022-10-19 11:16:53 +08:00
@asfdsafdas 看不出这个线程有什么关系?除了类名
|
4
AoEiuV020CN 2022-10-19 11:30:46 +08:00
@asfdsafdas #2 这不就是个普通的对象,拥有一个普通的 map ,看不出来你想设计什么,
|
5
enoc 2022-10-19 11:31:13 +08:00 1
可能是写 Threadlocal 的时候还没有 HashMap ?
https://stackoverflow.com/questions/30482441/why-doesnt-threadlocal-use-java-util-hashmap-to-store-value-but-customize-one |
6
SoloCompany 2022-10-19 13:24:58 +08:00 1
ThreadLocal 在抽象上的确就是一个 Map 啊 (实际上实现也是), 只不过这个 map 的 key 不是你想象中的 string, 而是 ThreadLocal 定义的变量本身的抽象
|
8
bk201 2022-10-19 14:05:51 +08:00
你反问他为什么
|
9
xilou31 2022-10-19 14:12:13 +08:00 1
因为 Thread 类是线程呀,线程这个概念是没有 Map 的。
这应该是叫做面向对象编程设计原则里面的「单一功能原则」? |
10
zoyua 2022-10-19 18:06:13 +08:00
因为 threadlocal 就是这么设计的,你看源码,它就是用 ThreadLocalMap 存的
|
11
leonshaw 2022-10-19 18:21:38 +08:00 1
如何拿到当前线程的 Thread ?—— 把 Thread 对象存到 ThreadLocal 里。
|
12
7911364440 2022-10-19 18:36:14 +08:00
在 Thread 类中定义一个 Map 也是没问题的,我觉得正确答案应该就是 5 楼说的,实现 ThreadLocal 的时候还没有 HashMap
|