เธรด (Thread)

เธรด (Thread)

คุณลักษณะเด่นข้อหนึ่งของภาษาจาวาคือ ความสามารถในการพัฒนาโปรแกรมแบบมัลติเธรด (MultiThread)  ที่สามารถทำงานได้หลายๆ งานในหนึ่งโปรแกรม  ซึ่งคุณสมบัตินี้ไม่มีในภาษาอื่น เช่น ภาษา C หรือ C++ ซึ่งถูกจัดเป็นภาษาประเภทซิงเกิลเธรด (Single-Thread) ที่มีเพียงงานเดียวในแต่ละครั้งที่หน่วยความจำประมวลผล

สำหรับงานแต่ละงานจะเรียกว่า เธรด ซึ่งจะแตกต่างจากโพรเซล (process) ที่ทำงานภายใต้ระบบปฏิบัติการแบบ Multitasking ตรงที่โพรเซลแต่ละโพรเซล จะมีความเป็นอิสระต่อกัน แต่

เธรดแต่ละเธรดอาจใช้ข้อมูลร่วมกันโปรแกรมภาษาจาวาสามารถกำหนดให้ออปเจ็คของคลาสใดๆ ทำงานเป็นแบบเธรดได้ ซึ่งก็จะทำให้สามารถรันโปรแกรมของออปเจ็คแบบเธรดหลายออปเจ็คได้พร้อมกัน โดยภาษาจาวาจะมีตัวจัดตารางเวลาของออปเจ็คแบบเธรดเพื่อจัดลำดับการทำงานของ

ออปเจ็คแบบเธรด ทั้งนี้เพราะโปรแกรมบางประเภทจำเป็นต้องพัฒนาเป็นแบบเธรด เช่น โปรแกรมภาพกราฟฟิกแบบเคลื่อนไหว (Graphic Animation) โปรแกรมนาฬิกา และโปรแกรมแม่ข่าย (Application Server) เป็นต้น

วงจรการทำงานของเธรด

                วงจรชีวิตของแต่ละเธรดเริ่มต้นที่ขั้น new เมื่อถูกเริ่มสร้างและจะอยู่ที่ขั้นนี้จนกระทั่งเมธอด start ถูกเรียกประมวลผล ซึ่งจะทำให้เธรดนั้นๆ อยู่ที่ขั้น ready  โดยที่เธรดที่มี priority สูงที่สุดจะถูก ทำงานก่อนโดยเขาสูขั้น running แต่ละเธรดจะเขสู่ขั้นสุดท้ายของวงจรชีวิตคือ  dead เมื่อเธรดนั้น ทำงานในเมธอด run เสร็จเรียบร้อยหรือเมื่อถูกหยุดการทำงานด้วยเหตุผลใดๆ ก็ตาม

ออปเจ็คแบบเธรดเมื่อลงทะเบียนไว้กับตัวตารางเวลาแล้ว อาจยังไม่มีการรันโปรแกรมโดยทันที แต่ทั้งนี้จะขึ้นอยู่กับสถานะของออปเจ็คซึ่งวงจรการทำงานของเธรด จะมีการทำงานดังแสดงในรูปที่ 2-32 โดยจะมีสถานะต่างๆ