Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt giữa Process (tiến trình) và Thread (luồng) trong Java.
Process
- Là chương trình đang thực thi
- Tốn nhiều thời gian để tạo, kết thúc, chuyển ngữ cảnh (context switch)
- Tiêu tốn nhiều tài nguyên hệ thống
- Kém hiệu quả về giao tiếp (communication)
- Đặc tính cách ly (isolated)
- Còn gọi là heavy-weight process
- Chuyển process dùng system call qua OS interface
- Nếu một server process bị block, các process khác không chạy được
- Có Process Control Block, Stack, Address Space riêng
Thread
- Là đoạn (segment) của process
- Tốn ít thời gian để tạo, kết thúc, chuyển ngữ cảnh
- Tiêu tốn ít tài nguyên hơn
- Chia sẻ bộ nhớ (shared memory)
- Còn gọi là light-weight process
- Hiệu quả hơn về giao tiếp
- Chuyển thread KHÔNG cần system call
- Không làm gián đoạn kernel
- Khi một server thread block, thread khác vẫn chạy được
- Dùng Process Control Block của parent, có Thread Control Block, Stack, Common Address Space riêng