答:
mosespaul老师,请问给代码块加Syncronized能解决这问题吗?
我的意思是让判断是否为空和下面的实际处理作为一个整体事务进行,就是说在这个期间内,不让别的线程过来打断。这样就能保证整体的一致性了。
我们以前给银行做项目时,比如一个客户端要访问数据库中的一个表,为了防止其他客户端也并行的访问这个表,就要在操作前给这个表加个锁。
其实我们也知道,有时候访问一个表的处理时间基本上也是0.1ms都用不了,这期间别的用户同时过来访问的概率其实理论上是可以忽略不计的
(估计几十年也一次都不可能发生的),如果这个表是不常用的表,那估计一千年也不会发生一次。
但是,为了严谨,我们肯定是要做这个加锁操作的,如果项目组一起check源代码的时候,发现谁的程序有该加锁而不加的时候,那肯定是要改程序的。
我的意思是说,如果能有类似于加锁互斥这种方法来解决的话,不管是谷歌的类库还是我们的程序中,都应该加个锁。毕竟我们程序员的工作就是个严谨的工作。当然,如果,没有类似的解决方案,那就是只能是忽略这种小概率事件了(但心理总觉得不太舒服。。。。)。