ความแตกต่างระหว่าง Runnable และ Thread

สารบัญ:

ความแตกต่างระหว่าง Runnable และ Thread
ความแตกต่างระหว่าง Runnable และ Thread

วีดีโอ: ความแตกต่างระหว่าง Runnable และ Thread

วีดีโอ: ความแตกต่างระหว่าง Runnable และ Thread
วีดีโอ: Difference Between Implementing Runnable Interface and Extending Thread Class | Runnable vs Thread 2024, ธันวาคม
Anonim

ความแตกต่างที่สำคัญ – Runnable vs Thread

โปรแกรมที่กำลังดำเนินการเรียกว่ากระบวนการ กระบวนการสามารถแบ่งออกเป็นหลายกระบวนการย่อย ตัวอย่างเช่น Microsoft Word เป็นกระบวนการ ในขณะเดียวกันก็ตรวจสอบการสะกดผิดและไวยากรณ์ นั่นคือกระบวนการย่อย กระบวนการย่อยเหล่านี้เรียกว่าเธรด Multithreading เป็นกระบวนการของการดำเนินการหลายเธรดพร้อมกัน แอปพลิเคชันแบบเธรดสามารถสร้างขึ้นได้โดยใช้ภาษาโปรแกรมต่างๆ Runnable และ Thread เกี่ยวข้องกับการเขียนโปรแกรม Java มีสองวิธีใน Java ในการสร้างเธรดโดยใช้อินเทอร์เฟซ Runnable หรือขยายคลาสเธรดเมื่อใช้งาน Runnable เธรดจำนวนมากสามารถแชร์วัตถุเธรดเดียวกันในขณะที่อยู่ในคลาส Extended Thread แต่ละเธรดมีอ็อบเจ็กต์ที่ไม่ซ้ำกันที่เกี่ยวข้อง นั่นคือข้อแตกต่างที่สำคัญระหว่าง Runnable และ Thread

รันได้คืออะไร

กระทู้จะผ่านบางรัฐ “ใหม่” คือจุดเริ่มต้นของวงจรชีวิตด้าย หลังจากที่เรียกใช้เมธอด start() บนเธรดใหม่ มันจะกลายเป็นรันได้ หากตัวจัดกำหนดการเธรดเลือกเธรด เธรดจะถูกส่งไปยังสถานะกำลังทำงาน เธรดกำลังรอสถานะหากเธรดนั้นกำลังรอเธรดอื่นเพื่อทำงาน หลังจากเธรดทำงานเสร็จแล้ว เธรดจะเข้าสู่สถานะสิ้นสุด

A thread สามารถใช้งานได้โดยใช้อินเทอร์เฟซ Runnable อ้างอิงโปรแกรมด้านล่าง

ความแตกต่างระหว่าง Runnable และ Thread
ความแตกต่างระหว่าง Runnable และ Thread

รูปที่ 01: โปรแกรม Java เพื่อสร้างเธรดโดยใช้อินเทอร์เฟซที่เรียกใช้ได้

ตามโปรแกรมข้างต้น คลาส Runnable Demo ใช้งานอินเทอร์เฟซ Runnable เมธอด run() อยู่ในคลาสที่ใช้อินเทอร์เฟซ Runnable เป็นจุดเริ่มต้นของเธรด ตรรกะอยู่ในเมธอด run() ในโปรแกรมหลัก เธรดถูกสร้างขึ้นโดยการกำหนดอ็อบเจ็กต์ที่สร้างอินสแตนซ์จากคลาส Runnable Demo มันคือ t1 วิธีการ start() เรียกโดยใช้ t1.

ดูโปรแกรมด้านล่าง

ความแตกต่างระหว่าง Runnable และ Thread_Figure 02
ความแตกต่างระหว่าง Runnable และ Thread_Figure 02

รูปที่ 02: โปรแกรม Java เพื่อสร้างเธรดเพื่อดำเนินการวนซ้ำโดยใช้งานอินเทอร์เฟซที่เรียกใช้ได้

จากตัวอย่างข้างต้น คลาส Runnable Demo ใช้อินเทอร์เฟซ Runnable ตรรกะในการดำเนินการโดยใช้เธรดนั้นเขียนในเมธอด run() ในโปรแกรมหลัก เธรดถูกสร้างขึ้นโดยการกำหนดอ็อบเจ็กต์ที่สร้างอินสแตนซ์จากคลาส Runnable Demoมันคือ t1 จากนั้นจะเรียกเมธอด start() โดยใช้ t1.

กระทู้คืออะไร

อีกวิธีหนึ่งในการสร้างเธรดคือการขยายคลาสของเธรด ประกอบด้วยสามขั้นตอน ขั้นแรกให้ประกาศคลาสเป็นการขยายคลาสของเธรด หลังจากนั้น ควรเขียนเมธอด run() มีลำดับขั้นตอนที่เธรดควรดำเนินการ สุดท้าย วัตถุเธรดจะถูกสร้างขึ้น และมีการเรียกเมธอด start() เพื่อเริ่มต้นการดำเนินการของเธรด อ้างอิงโปรแกรมด้านล่าง

ความแตกต่างระหว่าง Runnable และ Thread_Figure 03
ความแตกต่างระหว่าง Runnable และ Thread_Figure 03

รูปที่ 03: โปรแกรม Java ที่ขยายคลาสเธรด

ตามโปรแกรมข้างต้น คลาส MyThread จะขยายคลาสของเธรด มันแทนที่วิธีการรัน เมธอด run() มีตรรกะที่เธรดจะดำเนินการ เป็นจุดเริ่มต้นของเธรดจากนั้นวัตถุเธรดจะถูกสร้างขึ้น เป็นเธรดที่ 1 เธรดเริ่มต้นโดยใช้เมธอด start() มันจะรันเมธอด call to run()

ตัวอย่างโปรแกรมของสองคลาสที่ขยายคลาสเธรดมีดังต่อไปนี้

ความแตกต่างที่สำคัญระหว่าง Runnable และ Thread
ความแตกต่างที่สำคัญระหว่าง Runnable และ Thread

รูปที่ 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

แนะนำ: