如何将参数传递给Thread
?
陈述log( "before process , counter = " + i);
导致错误:
不能引用在不同方法中定义的内部类中的非final变量i
请帮助
for (int i = 0; i < 20; i++) {
Thread thread = ThreadManager.createThreadForCurrentRequest(new Runnable() {
public void run() {
try {
log("before process , counter = " + i);
Thread.sleep(1000);
log("after process , " + "counter = " + i);
} catch (InterruptedException ex) {
throw new RuntimeException("Interrupted in loop:", ex);
}
}
});
thread.start();
}
答案 0 :(得分:0)
正如它所说,只是一个最终变量。这告诉Java它不会被更改,它可以安全地用在Runnable中。
for (int i = 0; i < 20; i++) {
final int counter=i;
答案 1 :(得分:0)
你需要这样做:
for (int i = 0; i < 20; i++) {
final int counter = i;
// etc
}
然后在你的线程中使用counter
而不是i
(正如错误消息告诉你的那样,这不是最终的,因此在这种情况下不能使用)。