多线程存在的安全隐患

多线程存在的安全隐患_第1张图片
0.多线程隐患.png

当多个线程对同一块资源进行访问的时候就会存在数据安全隐患。
如图所示,A、B两个线程同时对数据17进行修改,按预期数据17最后应该是19,但最终的实际结果却是18,这就是由多线程造成的错误。
比较经典的由多线程造成的错误就是卖票。


多线程存在的安全隐患_第2张图片
0.卖票.png

两个线程在读取票数的时候都是1000没有问题,当一个线程卖出一张票后再写入此时剩余票数是999,这也是没有问题的,但当另一个线程卖出一张票后再写入剩余票数还是999这就有问题了。造成这样的问题是由于第二个线程在第一个线程写入剩余票数之前读取的票数,如果第二个线程读取票数的操作在第一个线程写入剩余票数之后就不会出现这种情况了。可线程读取数据的时间是不一定的,所以说使用多线程会存在安全隐患。

这里我们只说多线程存在的隐患,暂不说解决方法。

你可能感兴趣的:(多线程存在的安全隐患)