Daemon Threads (หรือเรียกง่ายๆ ว่า Thread ประเภท Daemon) เป็นคำที่เราอาจได้ยินกันในโลกของการเขียนโปรแกรมหลายๆ ท่าน แต่หากเราจะอธิบายให้เด็กๆ วัย 8 ขวบเข้าใจนั้น เราคงต้องใช้วิธีการอธิบายที่เรียบง่ายและสร้างภาพจินตนาการได้ดี
จินตนาการว่าโปรแกรมคอมพิวเตอร์ของเราคือบ้านหลังหนึ่ง และภายในบ้านนี้มีเด็กๆ วิ่งเล่นอยู่หลายคน แต่ละคนสามารถทำกิจกรรมต่างๆ ในบ้านได้อย่างอิสระ ดูหนังสือ, เล่นของเล่น, หรือจิบน้ำจากตู้เย็น เด็กๆ เหล่านี้ก็เหมือน Threads ในโปรแกรมคอมพิวเตอร์ของเรา
Daemon Threads ก็เหมือนเด็กคนหนึ่งที่มีหน้าที่พิเศษ หน้าที่ของเขาอาจจะเป็นการเติมน้ำในตู้เย็นเมื่อน้ำใกล้หมด หรือเปิดไฟในทางเดินเมื่อมืด งานเหล่านี้ไม่ต้องการให้เจ้าของบ้านให้ความสนใจอย่างต่อเนื่อง แต่อยากให้ทำเฉยๆ ไปในขณะที่เจ้าของบ้านกำลังทำกิจกรรมอื่นในบ้าน
โดยปกติแล้ว หากเจ้าของบ้าน (หรือโปรแกรมหลัก) ต้องการจะปิดบ้าน (หรือปิดโปรแกรม), เด็กๆ ทุกคนจะต้องหยุดทำกิจกรรมและกลับไปที่ห้องของตัวเอง (หรือ Threads หยุดทำงาน) แต่สำหรับ Daemon Threads นั้นไม่จำเป็นต้องรอให้มันจบงาน บ้านสามารถปิดได้ทันทีโดยไม่ต้องกังวลว่าเขาจะเล่นไม่จบ แต่นักพัฒนาโปรแกรมต้องระมัดระวัง เพราะบางทีการที่ Daemon Threads ไม่จบงานอาจทำให้เกิดปัญหาเช่น ไม่ได้เติมน้ำในตู้เย็นจนหมด, หรือไม่ได้ปิดไฟที่เปิดไว้
ตัวอย่างของ Daemon Threads ในภาษา Java มีดังนี้:
class WaterRefillDaemon implements Runnable {
public void run() {
while (true) {
System.out.println("Daemon Thread กำลังเติมน้ำในตู้เย็น...");
// ทำงานเติมน้ำในความจริงแล้วนะ
try {
Thread.sleep(1000); // พักเฉยๆ 1 วินาที
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(new WaterRefillDaemon());
t1.setDaemon(true); // ตั้งค่าให้ Thread เป็น Daemon
t1.start();
System.out.println("หลักสูตรโปรแกรมหลักกำลังทำงาน...");
try {
Thread.sleep(4000); // หลักสูตรโปรแกรมหลักทำงาน 4 วินาที
} catch (InterruptedException e) {
e.printStackTrace();
}
// หลังจาก 4 วินาที หลักสูตรโปรแกรมหลักจะจบ และโปรแกรมทั้งหมดจะจบการทำงาน แม้ว่า Daemon Thread
// อาจจะยังไม่เติมน้ำจบ
System.out.println("เวลาของหลักสูตรโปรแกรมหลักสิ้นสุด, โปรแกรมจะปิดลงเดี๋ยวนี้...");
}
}
การใช้ Daemon Threads จะมีประโยชน์มากในสถานการณ์ที่เราต้องการให้โปรแกรมหลักของเราไม่ต้องรอจนกระทั่งงานบางอย่างจบสิ้น ในขณะที่ยังรักษาการทำงานของงานประจำหรืองานสำคัญไว้
การเขียนโปรแกรมไม่ได้ยากอย่างที่คิด ถ้าคุณอยากเรียนรู้การเขียนโปรแกรมให้มีประสิทธิภาพและการใช้ Threads ในการพัฒนาโปรแกรมของคุณให้เหมาะสมกับงานที่ต้องการ การศึกษาวิชาการเขียนโปรแกรมอาจเป็นก้าวแรกที่ดี เริ่มที่การเรียนรู้วิชาพื้นฐานและค่อยๆ ก้าวไปสู่เนื้อหาที่ลึกขึ้น คุณก็จะสามารถเขียนโปรแกรมได้อย่างมีความสุขและมืออาชีพได้ในอนาคต!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: daemon_threads programming_concepts java threads concurrency multithreading programming_basics runnable_interface thread_management computer_programming programming_for_kids programming_tutorials daemon_thread_example java_programming computer_science
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com