为了账号安全,请及时绑定邮箱和手机立即绑定

ThreadLocal

求老仙 架构师
难度初级
时长 1小时40分
学习人数
综合评分9.73
27人评价 查看评价
9.8 内容实用
9.7 简洁易懂
9.7 逻辑清晰

最新回答 / 实时编程
HashMap。本身就不是线程安全的,所以 你这个写法 我暂时不确定 是不是能正确的运行 但是既然不是线程安全的  所以 我觉得 不可以这样写如果你加个锁 确实可以 变成安全的 操作但是就会 变成多线程 竞争锁   非常消耗性能虽然实现了 类似功能 但是性能 太低 所以JDK 不会这样设计

最赞回答 / qq_Forever浅唱此生_0
小数值取数组是java做的缓存和引用没关系,实际没法用Integer做引用是因为Integer的值是final的,和String一样,创建后没办法改变自身的值,计算后返回的都是一个新的Integer/String

最新回答 / TimAndy
golang 虽然不是线程模型, 但是有协程. 可以把协程理解成其他语言的轻量级线程.ThreadLocal for golang 无内存泄露, 无竞争,高性能, 不修改golang源码.支持 go1.18 泛型, 支持 386, amd64, arm, arm64 平台.支持 go1.13-1.18 版本, 在 linux,windows,mac 上均测试通过.项目地址 https://github.com/timandy/routine

最新回答 / 慕码人118462
检查引入的包是不是正确。检查有没有在idea中添加插件idea中需要设置开启自动开启注解另外,你的curl read 数据不正确 可能多线程并非造成的,不一定跟@Data注解有关系

最赞回答 / weixin_慕桂英0137301
因为程序最终是给计算机去执行的。但是,更多的时候,是让开发者能够看懂代码,方便迭代开发。

讲师回答 / 求老仙
hello,我用的java 11。 你说的是不是withInitial工厂方法么?

最赞回答 / qq_Forever浅唱此生_0
这个HashSet和HashMap的多线程调用时是一样的风险,在扩容时有可能导致死循环,所以要用同步的容器或者同步代码块去调用“添加”的方法

讲师回答 / 求老仙
秋田君说的也很不错, 我这里补充下, Map<Thread, T>这种结构,hash表冲突会很严重,举个例子。map.put(thread1, 100);map.put(thread1, 200);map.put(thread1, 300);你发现没有,一个map put了三个值,那取值的时候, 怎么办呢?

最赞回答 / Eri1c
initialValue起初始化作用只运行一次,每个Thread对应的Val对象的初始值确实都设为了0,没问题

最新回答 / qq_慕雪7502798
“用两层HashMap是由于一个线程中可能会拥有多个ThreadLocal成员变量,所以内层HashMap是为了保存同一个线程中的不同ThreadLocal变量。”说法不对吧  如果一个线程中有两个ThreadLocal成员变量,那么按照你说的,他们的key是当前线程ThreadLocal值,那不是key冲突了?
课程须知
1、对多线程、并发概念有一定了解 2、熟悉Java基本语法
老师告诉你能学到什么?
1、课程的主旨不是讲死的概念,而是尽我所能的引发大家的思考,由现象观察思考逐渐接近事物的本质。 2、不仅理解ThreadLocal是什么?怎么用?何时用? 3、从设计者的角度去思考,大神们在怎么用,我应该怎样用?——思考更多的为什么?为何而存在,为何要这样设计。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消