我有以下代码:
public class CheckIfSame implements Runnable {
private int[][] m;
private int[][] mNew;
private int row;
private boolean same;
public CheckIfSame(int[][] m,int[][] mNew,,int row,boolean same) {
this.m = m;
this.mNew = mNew;
this.row = row;
this.same = same;
}
@Override
public void run() {
for (int i = 0; i < mUpd[0].length; i++) {
if(m[row][i] != mUpd[row][i]) {
same = false;
}
}
}
}
基本上,我使用多线程来逐行检查两个矩阵是否至少相差1个元素。
我通过主类激活这些线程,将行传递给执行器池。
但是,出于某种原因,即使满足if条件,布尔值same似乎也不会更新为false。
1条答案
按热度按时间sauutmhj1#
多个线程试图同时访问该布尔值:更新
same
变量。你可以选择一个
AtomicBoolean
. 当有多个线程访问布尔变量时使用它: