赞
踩
做过后台开发的,应该都知道线程变量这个东西,能保证每个线程拿到的数据与别的线程不同,只要做简单的set/get 操作,就可以。
—– 这是前提 —–
今天做开发,需要在内层函数中传数据到外层,一种文案是,层层return,这种方法可以实现,but 我调用了三层方法,意味着至少改四处,更多的修改意味着更多的bug,然后就想到有个神奇的线程变量可以使用。
代码一阵修改,上线,等着效果出来,发现在线程变量中设置的数据出现次数很多很多,预期只有个别次出现的,然后检查检查再检查,发现代码并无问题,运行也是正常的。
一个小时之后,突然想到是不是线程池的原因,导致并没有真正地创建新的线程,也就是说线程变量中保存的还是之前线程的内容。
有了思路,先搜索,再试验,果然,线程池由于未创建新的线程,导致线程变量也是之前的内容,有了结论,修改就很简单了,一种直接在进入线程时设置为null,另一种是在使用后清空,两种文案效果相同。唯一不同就是后面代码是否要继续使用此值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。