性能问答>我在A函数里面声明一个局部变量M,然后接着在A函数new一个新线程B去操作M,在B里对M的修改会同步到A吗?为什么呀?>
14回复

我在A函数里面声明一个局部变量M,然后接着在A函数new一个新线程B去操作M,在B里对M的修改会同步到A吗?为什么呀?



如题

608 阅读
请先登录,再评论

安卓我也没写过,我猜你截图里面这个SimpleTarget里面的time和你顶上这个var time不是同一个变量,不然正常这个写法应该都过不了编译检查

6月前
回复 大佬们的小马甲:

对的,绕了半天,一直在想为啥透出去了

6月前回复
回复 社群问题小管家:

哦哦,懂了,那个var time不是方法本地变量,刚才没仔细看

6月前回复
回复 大佬们的小马甲:

截图的time是外部类的成员变量,后面的一系列操作都是匿名内部类对外部类成员的操作

6月前回复
查看更多

未命名文件.jpg 就这样的代码,start是子线程回调,ready是主线程回调,然后这个函数本身被io线程调用,为啥在ready的时侯能拿到start赋值的time,不应该在私有的栈帧里面吗

6月前

看变量类型,基础类型肯定是不会影响的,对象类型,然后你修改对象属性是可以同步到的

6月前
回复 社群问题小管家:

int肯定不行,因为线程只是拿个值拷贝,你想达到这个效果,可以用AtomicInteger包装下,就能改了

6月前回复
回复 大佬们的小马甲:

就是int 类型的,为啥能同步到?麻烦大佬解释下呀

6月前回复