gpt4 book ai didi

java - 多线程 Java - 同步 - 警告 Android Studio

转载 作者:行者123 更新时间:2023-12-01 11:47:32 29 4
gpt4 key购买 nike

我正在使用 Android Studio (intelliJ-idea) 进行 Android 开发。我收到关于这段代码的警告:

    if (status == STATUS_SOLVING) {
if (!solverThread.isAlive())
if (status != STATUS_SOLVED) // <<<<<< WARNING THIS LINE
status = STATUS_DATA_COLLECTING;
}

上面指出的行给了我一个警告,说这个条件始终为真。如果整个程序在单个线程上运行,我可以明白为什么这是真的。

但是由于我的程序使用并行线程来更改 status 的值,这是否意味着此条件可能会在上面代码段中的第 #1 行和第 #3 行之间发生变化?

这是一个有效的警告吗?我错过了什么吗?

如果我使用 && 运算符将嵌套的 if 更改为单个 if,情况会发生变化吗?

最佳答案

这意味着,如果您指望另一个线程更改某个值,那么这是一种危险的编程策略,并且编译器不会知道它正在被不同的 friend 访问,并且会在假设没有被访问的情况下进行优化。

任何可能被多个线程触及的变量都需要声明为 volatile,以通知编译器它被多个线程触及,并且在处理它时需要特别小心。如果您不知道,我敢打赌您还有十几个其他多线程错误正在等待发生。

关于java - 多线程 Java - 同步 - 警告 Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041755/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com