
1
Chương 6
Sử dụng đa luồng trong lập trình
mạng

2
Mục lục chương
• 1. Cơ bản về luồng
• 2. Sử dụng luồng trong Java
• 3. Đa luồng trong lập trình mạng
• 4. Lock và deaklock
• 5. Đồng bộ hóa luồng
• 6. Non-blocking Server

3
Cơ bản về luồng
• Một luồng (thread) là một dòng điểu khiển trong
một chương trình
• Không giống như một tiến trình (process), một
luồng không được cấp phát riêng một vùng nhớ
mà dùng chung vùng nhớ với chương trình
chính
• Điều này có nghĩa là nếu như chương trình
server có nhiều yêu cầu kết nối đến, thì việc sử
dụng thread sẽ giúp server không bị hết tài
nguyên

4
Cơ bản về luồng
• Trong thực tế, khi bất kỳ một chương trình Java
nào được thực hiện thì một luông luôn được tạo
ra
• Thread đó là thread chính (main thread) được
tạo ra khi hàm main được thực hiện và được
hủy bỏ khi hàm main kết thúc
• Nếu chương trình của ta tạo ra thêm các hàm
khác thì chương trình đó được gọi là đa luồng
(multithread)
• Khi máy tính có chỉ có một CPU thì các thread
chỉ được thực hiện tuần tự

5
Sử dụng luồng trong Java
• Java là ngôn ngữ hỗ trợ lập trình đa luồng
đầy đủ mà không phải gọi bất kỳ một hàm
API nào
• Tuy nhiên việc sử dụng luồng trong lập
trình Java tương đối phức tạo đỏi hỏi sự
cố gắng của lập trình viên