จะหยุด / ฆ่า Java Thread ที่รันอยู่นานที่รันไทม์ได้อย่างไร หมดเวลา -> ยกเลิก -> สถานะถูกขัดจังหวะ

เผยแพร่แล้ว: 2021-07-17

วิธีฆ่า Java Thread ใช้เวลานานกว่าที่คาดว่าจะเสร็จสิ้น หมดเวลา -> ยกเลิก -> สถานะถูกขัดจังหวะ

คุณเคยสงสัยหรือไม่ว่าจะฆ่าเธรด Java ที่รันเป็นเวลานานได้อย่างไร? คุณมีคำถามด้านล่างหรือไม่?

  • ฆ่า/หยุดเธรดหลังจากช่วงเวลาหนึ่ง
  • ฆ่าเธรดหลังจากเวลาที่กำหนดใน Java
  • วิธีฆ่า Java Thread
  • วิธีหยุดเธรดใน Java ด้วยตัวอย่าง
  • วิธีหยุดเธรดในตัวอย่างโค้ดจาวา
  • วิธีหยุดเธรดใน java โดยไม่ใช้วิธีหยุด

หากคุณมีคำถามใด ๆ ด้านล่างแสดงว่าคุณมาถูกที่แล้ว วันนี้เราจะมาดูตัวอย่างง่ายๆ ซึ่งสาธิตวิธี Java8 ในการฆ่าเธรดที่รันเป็นเวลานาน

ลอจิกคืออะไร:

  1. สร้างคลาส CrunchifyJavaTaskTimeout.java
  2. สร้าง Java Thread executor ที่มีขนาดเธรดพูลเพียง 1 ขนาด
  3. สร้าง 4 งานในอนาคตของวัตถุ CrunchifyRunner โดยหมดเวลา 3 วินาที
  4. CrunchifyRunner.java เป็นคลาสง่าย ๆ ที่ใช้ call() method
    • แนะนำการหน่วง 20 seconds หาก futureTask = 4
  5. เมื่อถึง 3 seconds ในอนาคตจะสร้างข้อยกเว้นการหมดเวลาหากเธรดยังทำงานอยู่
    • เมื่อหมดเวลา เราต้องยกเลิกงานโดยใช้ crunchifyFuture cancel( true ) ;
    • เมื่อ FutureTask ถูกยกเลิก มันจะทริกเกอร์ InterruptedException (โยนทิ้งเมื่อเธรดกำลังรอ อยู่ในสถานะสลีป หรือถูกใช้งาน และเธรดถูกขัดจังหวะ ก่อนหรือระหว่างกิจกรรม บางครั้งเมธอดอาจต้องการทดสอบว่าเธรดปัจจุบันถูกขัดจังหวะหรือไม่ และถ้าเป็นเช่นนั้น ให้โยนข้อยกเว้นนี้ทันที)

มาเริ่มกันเลย:

ขั้นตอนที่ 1 สร้างคลาส CrunchifyRunner.java

ขั้นตอนที่ 2 สร้างคลาส CrunchifyJavaTaskTimeout.java

ขั้นตอนที่ 3

คลิกขวาที่ CrunchifyJavaTaskTimeout.java และเรียกใช้เป็นแอปพลิเคชัน Java

คุณจะเห็นผลลัพธ์ด้านล่างในคอนโซล Eclipse

วิธีฆ่า stop java thread ที่รันไทม์

แจ้งให้เราทราบหากคุณมีคำถามใดๆ ในหัวข้อนี้