
1 AoEiuV020CN 2022-10-19 10:56:38 +08:00 不明白你说的 map ,是指所有线程共用一个 map 然后 thread 当 key 吗?这样共用 map 不就有线程冲突的可能了,不等价吧, |
2 asfdsafdas OP @AoEiuV020CN 我的理解大概这个意思 []( 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 可能是写 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:00ThreadLocal 在抽象上的确就是一个 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 因为 Thread 类是线程呀,线程这个概念是没有 Map 的。 这应该是叫做面向对象编程设计原则里面的「单一功能原则」? |
10 zoyua 2022-10-19 18:06:13 +08:00 因为 threadlocal 就是这么设计的,你看源码,它就是用 ThreadLocalMap 存的 |
11 leonshaw 2022-10-19 18:21:38 +08:00 如何拿到当前线程的 Thread ? 把 Thread 对象存到 ThreadLocal 里。 |
12 7911364440 2022-10-19 18:36:14 +08:00 在 Thread 类中定义一个 Map 也是没问题的,我觉得正确答案应该就是 5 楼说的,实现 ThreadLocal 的时候还没有 HashMap |