首先,我使用Runnable並構建了一個'while(true)'循環來繼續處理我的工作。 現在我發現改變使用Callable時有些困難。如何在線程運行時修改變量
package com;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableAndFuture {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ChildCallbale childCallbale = new ChildCallbale();
FutureTask<Integer> future = new FutureTask<Integer>(childCallbale);
Thread thread = new Thread(future);
thread.start();
childCallbale.setVar(1);
System.out.println(future.get());
childCallbale.setVar(2);
System.out.println(future.get());
}
}
class ChildCallbale implements Callable<Integer>{
private int var;
public void setVar(int var){
this.var = var;
}
@Override
public Integer call() throws Exception {
Thread.sleep(2000);
return var;
}
}
正如你所看到的,我想得到不同的結果,因爲我忽略了。不幸的是,這2個結果與1. 不僅我想知道如何實現我的要求,我也想知道爲什麼我的代碼變成不正確的原因。提前致謝。
簡而言之,你的基本概念都是錯誤的。你需要重新研究這些。 – 2014-10-27 10:45:32