เมธอด destroyForcibly() ใช้สำหรับ บังคับทำลายโปรเซส (kill a process) จำเป็นเมื่อโปรเซสทำงานค้าง (frozen) หรือไม่ตอบสนอง ตัวอย่างเช่น เมธอด isAlive() อาจคืนค่า true แม้หลังจากเรียก destroyForcibly() แล้ว เมธอดนี้คืนค่า true หากการยุติโปรเซสสำเร็จ มิฉะนั้นคืนค่า false
Syntax
boolean destroyForcibly()
ตัวอย่างโค้ด
import java.io.IOException;
import java.lang.ProcessBuilder;
public class DestroyForciblyTest {
public static void main(String args[]) throws IOException, InterruptedException {
ProcessBuilder pBuilder = new ProcessBuilder();
pBuilder.command("notepad.exe");
// เริ่ม Notepad application
Process process = pBuilder.start();
System.out.println("Started Notepad Application");
// รอ 5 วินาที
Thread.sleep(5000);
// บังคับทำลาย Notepad
process.destroyForcibly();
System.out.println("End of Notepad Application");
}
}
ผลลัพธ์
Started Notepad Application
End of Notepad Application

ความแตกต่างระหว่าง destroy() และ destroyForcibly()
| เมธอด | พฤติกรรม | ใช้เมื่อไหร่ |
|---|---|---|
| destroy() | ขอให้โปรเซสจบการทำงานแบบ graceful (SIGTERM) | โปรเซสทำงานปกติ สามารถปิดได้เอง |
| destroyForcibly() | บังคับยุติโปรเซสทันที (SIGKILL) | โปรเซสค้าง ไม่ตอบสนอง หรือต้องการปิดทันที |
ข้อควรระวัง
- destroyForcibly() อาจทำให้ข้อมูลหายไปหากโปรเซสกำลังเขียนไฟล์
- ควรลอง destroy() ก่อน หากไม่สำเร็จค่อยใช้ destroyForcibly()
- บาง OS อาจไม่รองรับ destroyForcibly() เต็มที่