วันนี้ทำการทดสอบ migrate data process ซึ่งจะมีบาง process ทำการ run process ผ่าน java.lang.Process 
 โดยปัญหาที่พบคือ อาจจะมีบาง process ที่ทำงานไม่จบสักที [ ไม่มี signal ออกมาจาก process นั้น ]
ส่วน code ที่เป้นปัญหาคือ  มัน
while( true ) {
    try {
          int process_status = process.waitFor();
          break;
    } catch( InterruptedException e )  {
    }
}
ปัญหามันเกิดขึ้นมาเมื่อ process ไม่มี signal อะไรออกมา
ดังนั้น สามารถแก้ปัญหาได้โดยการใช้  Timer มาช่วย  จะกำหนด timeout ได้ ดังนี้
Timer timer = new Timer();
timer.schedule(new InterruptProcess(Thread.currentThread()), 5000);
    try {
      exitStatus = proc.waitFor();
    }
    catch (InterruptedException e) {
      proc.destroy();
    }
    finally {
      timer.cancel();
    }
และ Class  InterruptProcess  ซึ่งจะ extends มาจาก timerTask ดังนี้class InterruptProcess
    extends TimerTask {
  Thread target = null;
  InterruptProcess(Thread target) {
    this.target = target;
  }
  /**
   * run
   */
  public void run() {
    target.interrupt();
    System.out.print("-|Run Interrupt|-");
  }
}
จากตัวอย่าง ผมทำการกำหนด timeout = 5 วินาที ดังนั้นถ้า process  มีเวลาทำงานมากที่สุดคือ 5 วินาทีเท่านั้น ส่วน process ที่ run เสร็จเร็วก็ไม่มีปัญหาอะไร