ความแตกต่างที่สำคัญ – Runnable vs Thread
โปรแกรมที่กำลังดำเนินการเรียกว่ากระบวนการ กระบวนการสามารถแบ่งออกเป็นหลายกระบวนการย่อย ตัวอย่างเช่น Microsoft Word เป็นกระบวนการ ในขณะเดียวกันก็ตรวจสอบการสะกดผิดและไวยากรณ์ นั่นคือกระบวนการย่อย กระบวนการย่อยเหล่านี้เรียกว่าเธรด Multithreading เป็นกระบวนการของการดำเนินการหลายเธรดพร้อมกัน แอปพลิเคชันแบบเธรดสามารถสร้างขึ้นได้โดยใช้ภาษาโปรแกรมต่างๆ Runnable และ Thread เกี่ยวข้องกับการเขียนโปรแกรม Java มีสองวิธีใน Java ในการสร้างเธรดโดยใช้อินเทอร์เฟซ Runnable หรือขยายคลาสเธรดเมื่อใช้งาน Runnable เธรดจำนวนมากสามารถแชร์วัตถุเธรดเดียวกันในขณะที่อยู่ในคลาส Extended Thread แต่ละเธรดมีอ็อบเจ็กต์ที่ไม่ซ้ำกันที่เกี่ยวข้อง นั่นคือข้อแตกต่างที่สำคัญระหว่าง Runnable และ Thread
รันได้คืออะไร
กระทู้จะผ่านบางรัฐ “ใหม่” คือจุดเริ่มต้นของวงจรชีวิตด้าย หลังจากที่เรียกใช้เมธอด start() บนเธรดใหม่ มันจะกลายเป็นรันได้ หากตัวจัดกำหนดการเธรดเลือกเธรด เธรดจะถูกส่งไปยังสถานะกำลังทำงาน เธรดกำลังรอสถานะหากเธรดนั้นกำลังรอเธรดอื่นเพื่อทำงาน หลังจากเธรดทำงานเสร็จแล้ว เธรดจะเข้าสู่สถานะสิ้นสุด
A thread สามารถใช้งานได้โดยใช้อินเทอร์เฟซ Runnable อ้างอิงโปรแกรมด้านล่าง
รูปที่ 01: โปรแกรม Java เพื่อสร้างเธรดโดยใช้อินเทอร์เฟซที่เรียกใช้ได้
ตามโปรแกรมข้างต้น คลาส Runnable Demo ใช้งานอินเทอร์เฟซ Runnable เมธอด run() อยู่ในคลาสที่ใช้อินเทอร์เฟซ Runnable เป็นจุดเริ่มต้นของเธรด ตรรกะอยู่ในเมธอด run() ในโปรแกรมหลัก เธรดถูกสร้างขึ้นโดยการกำหนดอ็อบเจ็กต์ที่สร้างอินสแตนซ์จากคลาส Runnable Demo มันคือ t1 วิธีการ start() เรียกโดยใช้ t1.
ดูโปรแกรมด้านล่าง
รูปที่ 02: โปรแกรม Java เพื่อสร้างเธรดเพื่อดำเนินการวนซ้ำโดยใช้งานอินเทอร์เฟซที่เรียกใช้ได้
จากตัวอย่างข้างต้น คลาส Runnable Demo ใช้อินเทอร์เฟซ Runnable ตรรกะในการดำเนินการโดยใช้เธรดนั้นเขียนในเมธอด run() ในโปรแกรมหลัก เธรดถูกสร้างขึ้นโดยการกำหนดอ็อบเจ็กต์ที่สร้างอินสแตนซ์จากคลาส Runnable Demoมันคือ t1 จากนั้นจะเรียกเมธอด start() โดยใช้ t1.
กระทู้คืออะไร
อีกวิธีหนึ่งในการสร้างเธรดคือการขยายคลาสของเธรด ประกอบด้วยสามขั้นตอน ขั้นแรกให้ประกาศคลาสเป็นการขยายคลาสของเธรด หลังจากนั้น ควรเขียนเมธอด run() มีลำดับขั้นตอนที่เธรดควรดำเนินการ สุดท้าย วัตถุเธรดจะถูกสร้างขึ้น และมีการเรียกเมธอด start() เพื่อเริ่มต้นการดำเนินการของเธรด อ้างอิงโปรแกรมด้านล่าง
รูปที่ 03: โปรแกรม Java ที่ขยายคลาสเธรด
ตามโปรแกรมข้างต้น คลาส MyThread จะขยายคลาสของเธรด มันแทนที่วิธีการรัน เมธอด run() มีตรรกะที่เธรดจะดำเนินการ เป็นจุดเริ่มต้นของเธรดจากนั้นวัตถุเธรดจะถูกสร้างขึ้น เป็นเธรดที่ 1 เธรดเริ่มต้นโดยใช้เมธอด start() มันจะรันเมธอด call to run()
ตัวอย่างโปรแกรมของสองคลาสที่ขยายคลาสเธรดมีดังต่อไปนี้
รูปที่ 04: โปรแกรม Java ที่มีสองคลาสที่ขยายคลาสของเธรด
ตามโปรแกรมด้านบน ทั้งคลาส A และ B กำลังขยายคลาสเธรด ทั้งสองคลาสมีการใช้งานเมธอด run() เธรดหลักคือที่รันเมธอด main() ก่อนที่เธรดหลักจะตาย จะสร้างและเริ่มต้น thread1 และ thread2 เมื่อเธรดหลักถึงจุดสิ้นสุดของเมธอดหลัก เธรดสามเธรดจะทำงานแบบขนานกัน ไม่มีลำดับเฉพาะที่เธรดให้ผลลัพธ์ เมื่อเริ่มเธรดแล้ว เป็นการยากที่จะตัดสินใจลำดับที่จะดำเนินการพวกเขาทำงานอย่างอิสระ
ความคล้ายคลึงกันระหว่าง Runnable และ Thread คืออะไร
ทั้งคู่ใช้สร้างเธรดใน Java
Runnable กับ Thread ต่างกันอย่างไร
วิ่งได้กับเธรด |
|
Runnable เป็นอินเทอร์เฟซใน Java เพื่อสร้างเธรดที่อนุญาตให้เธรดจำนวนมากแชร์วัตถุเธรดเดียวกัน | เธรดเป็นคลาสใน Java เพื่อสร้างเธรดที่แต่ละเธรดมีอ็อบเจ็กต์ที่ไม่ซ้ำกันเชื่อมโยงอยู่ |
หน่วยความจำ | |
ใน Runnable หลายเธรดใช้วัตถุเดียวกัน ดังนั้นต้องใช้หน่วยความจำน้อยลง | ในคลาสเธรด แต่ละเธรดจะสร้างออบเจ็กต์ที่ไม่ซ้ำกัน ดังนั้นจึงต้องใช้หน่วยความจำมากขึ้น |
ความสามารถในการขยาย | |
หลังจากใช้งานอินเทอร์เฟซที่รันได้ มันสามารถขยายคลาสได้ | Java ไม่รองรับการสืบทอดหลายรายการ หลังจากขยายคลาสเธรดแล้ว จะขยายคลาสอื่นไม่ได้ |
การดูแลรักษารหัส | |
ส่วนต่อประสานที่รันได้ทำให้รหัสสามารถบำรุงรักษาได้มากขึ้น | ในคลาสเธรด การรักษาใช้เวลานาน |
สรุป – Runnable vs Thread
กระบวนการแบ่งออกเป็นหลายกระบวนการย่อยเพื่อทำงานหลายอย่างพร้อมกัน กระบวนการย่อยเหล่านี้เรียกว่าเธรด การสร้างอินสแตนซ์ของเธรดสามารถทำได้โดยใช้อินเทอร์เฟซ Runnable หรือโดยการขยายคลาสของเธรด ง่ายต่อการขยายคลาสเธรด แต่ไม่ใช่แนวปฏิบัติการเขียนโปรแกรมเชิงวัตถุที่ดีกว่าเมื่อใช้งาน Runnable เธรดจำนวนมากสามารถแชร์วัตถุเธรดเดียวกันในขณะที่ขยายคลาสเธรด แต่ละเธรดมีอ็อบเจ็กต์เฉพาะที่เกี่ยวข้อง นั่นคือความแตกต่างระหว่าง Runnable และ Thread ในคลาสเธรด การสร้างอ็อบเจ็กต์หลายอันสามารถใช้หน่วยความจำได้มากกว่า
ดาวน์โหลดไฟล์ PDF ของ Runnable vs Thread
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่ ความแตกต่างระหว่าง Runnable และ Thread