Bài giảng Multithread - Nguyễn Văn Khiết
Multithread
Nguyễn Văn Khiết
Nội dung
• Giới thiệu
• Thread
• Tạo thread
• Giao tiếp giữa các thread
• Điều khiển thread
• Thread Safe
Giới thiệu
• Java hỗ trợ sẵn cơ chế lập trình
multithread
• Một chương trình multithread có thể có
nhiều phần chạy cùng lúc. Mỗi phần như
vậy gọi là một thread.
Thread
• Một thread có thể có các trạng thái
– running
– suspended
– blocked
Độ ưu tiên của Thread
• Độ ưu tiên của một Thread là một số
nguyên thể hiện mức độ ưu tiên của
thread này trong mối tương quan với
thread khá c.
Main Thread
• Khi một chương trình java khởi động, có
một thread tự động được tạo ra. Đây là
main thread, là thread chính được chạy
(chứa hàm main).
Tạo thread
• Có 2 cá ch
– kế thừa lớp Thread
– implement interface Runnable
Đồng bộ hóa
• Sử dụng phương thức Synchronized
• Monitor trên đối tượng
Sử dụng phương thức
Synchronized
• Khi một thread đang thực hiện phương
thức có từ khóa synchronized đi kèm, các
thread khác muốn thực hiện phương thức
này của cùng đối tượng sẽ phải chờ
Monitor trên đối tượng
• Để đảm bảo chỉ một thread được truy xuất
vào đối tượng tại một thời điểm, ta có thể
sử dụng lệnh synchronized đối với đối
tượng đó.
Giao tiếp giữa các thread
• java cung cấp các phương thức sau để hỗ
trợ việc giao tiếp giữa các thread
– wait
– notify
– notifyAll
Điều khiển thread
• suspend : tạm dừng thực thi thread
• resume : kích hoạt lại thread đang tạm
dừng
• stop : chấm dứt hoạt động của thread
Điều khiển thread với java 2
– wait : yêu cầu thread hiện thời rời bỏ monitor
và tạm dừng họat động
– notify : đánh thức thread đầu tiên gọi wait trên
đối tượng
– notifyAll : đánh thức tất cả các thread gọi wait
trên đối tượng
Thread Safe
• Các swing component chỉ được truy cập
bởi 1 thread tại 1 thời điểm.
• Event-dispatch thread là thread thực thi
chính của chương trình (dùng swing).
• Code làm ảnh hưởng hoặc phụ thuộc vào
trạng thái của các component nên được
thực thi trong event-dispatch thread.
Thread Safe
• SwingUtilities cung cấp cơ chế thực thi
code trong event-dispatch thread.
– invokeAndWait(Runnable doRun) : thực thi
đồng bộ một thread.
– invokeLater(Runnable doRun) : thực thi bất
đồng bộ một thread
Thread Safe
• Ví dụ : các ví dụ swing của sun tutorial.
Bạn đang xem tài liệu "Bài giảng Multithread - Nguyễn Văn Khiết", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_multithread_nguyen_van_khiet.ppt
DeprecatedMethod.java
DeprecatedMethod2.java
MainThread2.java
MainThread4.java
MyThread.java
NewJFrame.java
Synchronization1.java