Thread (Class)
- เป็น Class
- มีหลายเมธอด:
start(),run(), ฯลฯ - ใช้หน่วยความจำมากกว่า (สร้าง Object ใหม่แต่ละ Thread)
- extends Thread → ไม่สามารถ extends Class อื่นได้ (Java ไม่รองรับ Multiple Inheritance)
- แต่ละ Thread มี Object ของตัวเอง
Runnable (Functional Interface)
- เป็น Functional Interface (มี abstract method เดียว:
run()) - ใช้หน่วยความจำน้อยกว่า
- implements Runnable → ยัง extends Class อื่นได้
- หลาย Thread สามารถ share Runnable object เดียวกันได้
- แนะนำให้ใช้ Runnable มากกว่า (ยืดหยุ่นกว่า)
สรุป
| คุณสมบัติ | Thread Class | Runnable Interface |
|---|---|---|
| ประเภท | Class | Functional Interface |
| Abstract Method | หลายตัว | run() เดียว |
| Memory | มากกว่า | น้อยกว่า |
| Extends อื่นได้? | ไม่ได้ | ได้ |
| Share Object | ไม่ได้ (แต่ละ Thread object แยก) | ได้ (หลาย Thread ใช้ Runnable เดียวกัน) |