我想在循环中创建新的Runnable
。但是,不可能在内部类中使用变量。我不能使用全局/实例变量,因为它会产生错误的结果。我的程序类似于下面的简化代码:
public class RunManager {
public void runManager(int delay, final Context context) {
for (int dim = 7; dim < 227; dim++) {
Runnable r = new Runnable() {
@Override
public void run() {
RandomKernels randomKernels = new RandomKernels();
try {
randomKernels.foo(context, dim);
} catch (InterruptedException e) {
Log.e(tag, e.getMessage());
}
}
};
Thread cnnThread = new Thread(r);
cnnThread.start();
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
错误是:
Variable 'dim' is accessed from within inner class, needs to be declared final.
最佳答案
您的问题是您正在尝试从新线程访问非最终变量。为了从新线程访问变量,需要将其声明为final。在您的cas中,您可以将dim int复制到大小为1的最终int数组,然后从线程访问该数组。
关于java - 使用新参数在循环中创建新线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42182274/