多线程时操作时需要注意到传入lambda表达式的变量是在运行时动态取值的,所以它很可能跟你在定义lambda时的值不一样。举个例子
而实际上我们期望的是123456789没有重复和缺失,而且这段代码可能每次跑出来的结果还不一样,这就是因为主线程一直在更改x,func线程便可能取到已经更新过的值。
有2个方式可以解决这个问题,
1. 在lambda表达式传入一个定义阶段的变量:
2. 不用lambda,使用args参数:
多线程时操作时需要注意到传入lambda表达式的变量是在运行时动态取值的,所以它很可能跟你在定义lambda时的值不一样。举个例子
而实际上我们期望的是123456789没有重复和缺失,而且这段代码可能每次跑出来的结果还不一样,这就是因为主线程一直在更改x,func线程便可能取到已经更新过的值。
有2个方式可以解决这个问题,
1. 在lambda表达式传入一个定义阶段的变量:
2. 不用lambda,使用args参数: