ThreadLocal 与 synchronize

本人认为两者干得完全是两回事。

threadlocal:孙悟空跟着唐僧从唐朝去西天取经,途中遇到了很多妖怪,打妖怪就要用到武器——金箍棒。有个商铺,里面放着很多根金箍棒,它说了“我可以提供你金箍棒,但是呢要走许多程序,大概要花一天的时间。” 孙悟空就去领了一根,用完就想了,途中还有许多妖怪要打呢每次去取金箍棒太浪费时间了,先不还了,等取经回来,再还给商铺吧,于是把棒子收到了耳朵里。以后每当遇到妖怪需要武器时,孙大圣就从耳朵中掏出金箍棒。

线程:一次请求,这个请求可以理解为从唐朝上路开始到西天取经后结束; threadlocal:商铺; Thread 中有个变量 ThreadLocal.ThreadLocalMap threadLocals =null;这个就是孙悟空的耳朵。


threadlocal:当资源(金箍棒)有多个,且线程中会经常用到这个资源时,就用threadlocal。

synchronize:当资源(金箍棒)只有一个时,孙悟空要用金箍棒打白骨精,西海龙王要用金箍棒棒罚龟丞相。OK ,那只能对资源(金箍棒)synchronize了,否则就会出现孙悟空前一秒还在打着白骨精 下一秒白骨精就变成龟丞相的笑话啦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值