HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÀI GIẢNG MÔN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Giảng viên: Nguyễn Mạnh Sơn
Điện thoại: 0904574001
Bộ môn: Công nghệ phần mềm - Khoa CNTT1
Học kỳ/Năm biên soạn: I – 2009/2010
12/09/12 2
Lập trình đa luồng
(Thread)
12/09/12 3
Nội dung
Tổng quan về thread
Vòng đời của thread
Các cách tạo thread
Đồng bộ
Liên lạc giữa các thread
Giao diện Executors
12/09/12 4
Tổng quan về thread
Thread là một đơn vị hành động của hệ điều hành.
Một chương trình có thể chia làm nhiều thread.
Các thread của một chương trình có thể thực hiện
gần như đồng thời.
Hai cách tạo Thread:
Tạo dẫn xuất từ lớp thread của Java
Cài đặt giao tiếp Runnable
12/09/12 5
Tổng quan về thread
12/09/12 6
Vòng đời của một Thread
A thread can in one of several possible states:
1. Running
● Currently running
● In control of CPU
2. Ready to run
● Can run but not yet given the chance
3. Resumed
● Ready to run after being suspended or block
4. Suspended
● Voluntarily allowed other threads to run
5. Blocked
● Waiting for some resource or event to occur
12/09/12 7
Vòng đời của một Thread
12/09/12 8
Vòng đời của một Thread (tiếp)
Bước 1: Tạo mới một thread (theo một trong hai cách)
Bước 2: Khai báo đối tượng thread => chuyển về trạng
thái sẵn sàng (Ready)
Bước 3: Khởi động Thread dùng phương thức Start =>
chuyển sang trạng thái Running
Bước 4: Tạm dừng một Thread thông qua lệnh Sleep =>
Chuyển về trạng thái Waiting rồi Ready
Bước 5: Chấm dứt một Thread bằng lệnh Stop =>
Chuyển sang trạng thái Dead.
12/09/12 9
Tạo thread mới
12/09/12 10
Tạo thread mới – Cách 1
12/09/12 11
Tạo thread mới – Cách 1
12/09/12 12
Tạo thread mới – Cách 1
12/09/12 13
Tạo thread mới – Cách 2
12/09/12 14
Tạo thread mới – Cách 2
12/09/12 15
Phân biệt hai cách tạo Thread
Implementing the
Runnable
interface
May take more work since we still
Declare a
Thread
object
Call the
Thread
methods on this object
Your class can still extend other class
Extending the
Thread
class
Easier to implement
Your class can no longer extend any other class
12/09/12 16
Các phương thức trong thread
12/09/12 17
Ví dụ về thread - 1
12/09/12 18
Ví dụ về thread - 2