我想在循环中创建新的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/

10-13 05:03