私は2つのクラスを持っています。 POJOとメイン。私はこのコードを実行するとExecutorService.awaitTermination(timeout、unit)はタイムアウト後も引き続き実行します
POJOクラス
public class Processor implements Runnable{
private int id;
public Processor(int id)
{
this.id = id;
}
@Override
public void run() {
System.out.println("Started ...."+ id);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Stoped ..." + id);
}
}
メインクラス
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService executor = Executors.newFixedThreadPool(2);
for(int i = 0; i < 5;i++)
{
executor.submit(new Processor(i));
}
executor.shutdown();
System.out.println("All tasks Submits");
try {
executor.awaitTermination(1, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Intrupted or Timeout");
}
System.out.println("all Tasks completed");
}
}
私は
Started ....0
All tasks Submits
Started ....1
all Tasks completed
Stoped ...1
Started ....2
Stoped ...0
Started ....3
Stoped ...2
Started ....4
Stoped ...3
Stoped ...4
しかし、私の理解あたりとしての出力を取得しますかつて中断された例外を発生させて戻す必要があります。しかし、それがTRYブロックから出た後でさえもなぜ動くか。