2 jujiawu1024 jujiawu1024 于 2016.04.11 18:00 提问

多线程计算相同的数据,结果为什么不稳定

多线程计算相同的数据,结果为什么不稳定。已经测试过了,如果是单线程的,结果就是稳定的,请问怎么回事?

4个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.11 18:55
已采纳

多线程之间如果访问了相同数据的话,那么就需要做线程同步访问控制才能保证数据的一致性。
例如:i++操作,本质是三个操作读取i,i加1,然后将i的值写入内存中,中三个操作如果有两个操作跨线程了,那么就导致其他线程可能得到错误的结果。
所以多线程访问共享变量需要做同步处理。

qq_26544491
qq_26544491   2016.04.11 18:17

脏数据,线程之间相互通信出问题了呗

qinjisheng_11
qinjisheng_11   2016.04.11 23:31

多线程的时候,每个线程的执行顺序不一定,造成结果不一定,可以考虑加锁!

xiaoyao880609
xiaoyao880609   2016.04.12 17:13

应该是线程之间变量冲突导致的,可以使用ThreadLocal封装变量,这样就可以实现线程间变量冲突。
下面是我整理的博客,里面有讲解ThreadLocal,希望对你有帮助~
http://blog.csdn.net/xiaoyao880609/article/details/51002928

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!