Professional Documents
Culture Documents
L10 - Conccurency in Java
L10 - Conccurency in Java
ĐA LUỒNG
2 Lớp Thread
❖Tác vụ được tạo ra bằng cách gọi hàm tạo của lớp tác
vụ (TaskClasss).
TaskClass task = new TaskClass(…);
❖Tác vụ phải được thực thi trong một thread.
▪ Lớp Thread có các hàm tạo để tạo ra các thread và nhiều
phương thức để điều khiển thread
▪ Tạo thread cho tác vụ:
Thread thread = new Thread(task);
▪ Gọi phương thức start() để báo cho JVM biết thread đã sẵn
sàng để chạy.
thread.start();
▪ JVM sẽ thực thi tác vụ bằng cách gọi phương thức run() của
tác vụ.
❖Khi một thread đã kết thúc thì sẽ không thể sử dụng
lại.
5/17/2023 Lập trình nâng cao 18
Ví dụ Task và Thread
▪ Lần 2
❖newFixedThreadPool
▪ Tạo ra một pool chỉ định rõ số lượng tối đa các thread có thể
chạy đồng thời.
▪ Một thread có thể được sử dụng lại để chạy tác vụ khác sau khi
hoàn thành tác vụ hiện tại.
❖newCachedThreadPool
▪ Tạo một pool có thể tạo các thread mới khi cần
▪ Sử dụng lại các thread đã được tạo trước đó khi các thread đó
đã hoàn thành tác vụ nó thực hiện.
❖ Câu hỏi: sau khi 100 thread kết thúc, số dư tài khoản là bao
nhiêu sau?
5/17/2023 Lập trình nâng cao 43
Ví dụ Thread không được đồng bộ
Shared resource
(critical region)
❖ Chỉ đồng bộ hóa một khối lệnh của một phương thức
❖Câu hỏi: phương án nào cho kết quả đúng? Tại sao?
1 4
2
5
3 6
Built-in monitor
(wait, notify, notifyAll)
❖Hàm main()
Thread Thread
1 2
❖Hàm main
❖Khái niệm về lập trình đồng thời, lập trình song song
❖Runnable, Thread, sử dụng lớp Thread để thực thi các
tác vụ
❖Đồng bộ hóa giữa các thread
❖Giao tiếp giữa các thread