示されているように、クラスによって返された UI のリストの文字列を更新するために使用JList
していますDefaultListModel
class ResponseGiver implements Callable<Future>{
int i;
//Constructor to initialize i
String call(){
...............
...............
return i;
}
上記から取得した結果を更新する他のクラスがあります
class Viewer {
ExecutorService es = new Executors.newFixedThreadPool(10);
List<Future<String>> futures = new ArrayList<Future<String>>();
for(int i =0;i<10;i++)
{
futures.add(new ResponseGiver(i));
}
for(Future<String> x : futures) //loop 2nd will be called 10 times
{
String p = x.get();
//update GUI with p
}
ここでの問題は、ループ 2nd で、5 番目のループで、get()
関数が 10 秒程度の時間を要し、その間に 6 番目から 10 番目までの他の先物が結果を準備しているとします。そのため、私の画面は 5 番目の結果を待ち、6 番目から 10 番目の結果も準備ができています。10 個の先物のいずれかが結果を返すとすぐに画面が更新されるようにします。