public class Threadz implements Callable<String>{
private boolean flag = false;
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
for(int i = 0; i < 3; i++){
Thread.sleep(2000);
}
flag = true;
return "Done";
}
public boolean isDone(){
return flag;
}
}
public class MyMain {
public static void main(String[] args) {
ExecutorService exe = Executors.newSingleThreadExecutor();
Threadz threadz = new Threadz();
Callable<String> cthread = threadz;
Future<String> fut = exe.submit(cthread);
while(true){
try {
if(!threadz.isDone())
System.out.println("Do something while waiting...");
else{
System.out.println(fut.get());
System.out.print("Do something with the result...");
break;
}
Thread.sleep(1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
上記のコードでの私の目標は、結果を返すスレッドを生成することですが、結果を待っている間、呼び出し元のスレッドを一時停止しないでください。これは実際に機能しますが、これを正しく行っていますか? これを行う適切な方法はありますか?また、結果を返した後、呼び出し可能なスレッドは自動的に終了しますか (リソースとメモリを解放します)?
ありがとう。