Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความสำคัญของเมธอด destroyForcibly() ใน Java 9

เมธอด 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

ความสำคัญของเมธอด destroyForcibly() ใน Java 9

ความแตกต่างระหว่าง destroy() และ destroyForcibly()

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

ข้อควรระวัง

  • destroyForcibly() อาจทำให้ข้อมูลหายไปหากโปรเซสกำลังเขียนไฟล์
  • ควรลอง destroy() ก่อน หากไม่สำเร็จค่อยใช้ destroyForcibly()
  • บาง OS อาจไม่รองรับ destroyForcibly() เต็มที่