定义了一个方法,该方法会传入参数,且方法内会根据该参数进行操作!然后定义一个比较大的list,通过多线程的方式调用该方法,会不会产生数据不一致的情况?
代码如下:
如上图所示,所有的线程都会调用addTwoNum方法,想知道如何线程一起执行到addTwoNum后,如果上一个线程还未计算结果,是否会改变之前的值,从而导致最终的数据不一致!
不会,你的方法是线程安全的,里面操作不依赖任何外部数据,只和入参相关。
楼上的不懂不要乱说
锁,最简单的直接加个synchronized
就看到的代码来说,虽然是多线程,但是每个线程处理的数据不同,不存在共享数据问题,不用加锁。。。
还有楼上说的对,方法里的局部变量是线程安全的,每次执行方法都会重新生成新的变量,不会有干扰。
方法里的局部变量,天然就具有线程安全性,因为他们都是在虚拟机栈中被处理的