- 对于某一ThreadLocal来讲,他的索引值i是确定的,在不同线程之间访问时访问的是不同的table数组的同一位置即都为table[i],只不过这个不同线程之间的table是独立的。
- 对于同一线程的不同ThreadLocal来讲,这些ThreadLocal实例共享一个table数组,然后每个ThreadLocal实例在table中的索引i是不同的。
ThreadLocal和Synchronized都是为了解决多线程中相同变量的访问冲突问题,不同的点是
- Synchronized是通过线程等待,牺牲时间来解决访问冲突
- ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,并且相比于Synchronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值。
这篇博客探讨了ThreadLocal和Synchronized在解决多线程访问冲突时的不同策略。ThreadLocal通过为每个线程提供独立的存储空间,避免了线程间的冲突,而Synchronized则是采用线程等待的方式确保同步。ThreadLocal提供了线程隔离,其值只能在当前线程内访问,增加了安全性。
10万+

被折叠的 条评论
为什么被折叠?



