ThreadLocal如何对数据改变进行保存

韩_力 2014-04-23 12:26:51
最近发现ThreadLocal这个东西,同样可以解决多线程并发的问题,但是不同的线程访问它的时候获得的数据都是他的初始化数据那个方法所返回的数据,那么我不同的线程操作的等于都是一个副本,但是我更改了这个副本的内容了,但是我其他的线程如果也需要了解这个线程所更改的内容该怎么办呢。

比如10个窗口卖100张票,每个窗口算一个线程,100张票用ThreadLocal存储起来,那我10个窗口卖的都是100张票,最后就等于是卖了1000张了,那怎么才能让一个窗口卖了一张票了,对ThreadLocal进行修改了,其他的线程也都能知道这个修改呢?

这个不能解决的话感觉你还得用同步来解决并发啊?

应该是有相关的方法或者什么来解决,但小弟刚学这个玩意,不晓得怎么弄,网上搜的资料也只是解释他们是用的单独的副本。
求指点!!!
...全文
318 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lasting00001 2014-04-23
  • 打赏
  • 举报
回复
这个貌似用的比较少吧?买票程序就不应该用这个,其实就是一个类生产者消费者模式,用锁和信号量即可。如果一定要用这个,试试volatile关键字可以不可以
木鱼121 2014-04-23
  • 打赏
  • 举报
回复
ThreadLocal存在的目的 就是为了当前线程的数据对象在当前线程中使用,如果要共享数据 就换种方法 跟这个类的初衷不符。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧