PDA

View Full Version : Cách sử dụng 1 số phương thức khi xài Thread



ttai_info
19-08-2013, 22:11
Khi sử dụng thread trong lập trình Java, ta cần biết cách thức sử dụng một số phương thức sau:
Sử dụng sleep & interrupt: Một thread A gọi phương thức sleep để tạm ngưng hoạt động một khoảng thời gian trước khi tiếp tục thực hiện những công việc, và một thread khác B có thể chen ngang lúc "ngủ" của thread A bằng phương thức interrupt. Lúc đó thread A sẽ "thức dậy" và thực hiện nốt phần việc còn lại. Bạn có thể xem clip demo tại đây:
http://www.youtube.com/watch?v=Vdv0jAr5qpI
Sử dụng wait & notify: Điều kiện sử dụng 2 phương thức này là phải đưa tài nguyên (đối tượng) gọi phương thức này vào đoạn synchronized để tạo khoá cho dữ liệu dạng chia sẽ, để xếp đối tượng đó vào Wait Pool, thread A chứa đối tượng gọi wait sẽ vào Lock Pool, và ở trạng thái chờ cho tới khi 1 thread khác B gọi phương thức notify để "đánh thức" thread A, khi đó thread A sẽ từ Lock Pool chuyển trạng thái về Runnable, và đối tượng wait sẽ chuyển sang trạng thái running cho tới khi complete. Bạn có thể xem clip demo tại đây:
http://www.youtube.com/watch?v=2kWBuWCoUXQ
Sử dụng yield: yield khác sleep ở chổ thread nào gọi nó thì thread đó sẽ tạm ngưng và nhường thread khác chạy, và khi không có thread nào còn runnable thì thread gọi yield sẽ thực hiện nốt phần việc. Tuy nhiên bạn nên hạn chế sử dụng phương thức yield, mục đích của nó để test hơn là sử dụng thông dụng như các phương thức kể trên. Bạn có thể xem clip demo tại đây:
http://www.youtube.com/watch?v=dfHwPXK4UBo
Và cũng trong chủ đề thread, trong thư viện javax.swing có 1 class hổ trợ chúng ta thực hiện việc tạm ngưng công việc giống như xài sleep của thread. Đó là class Timer. Class này chức năng cũng giống với Thread sleep. Bạn có thể xem và đối chiếu cách sử dụng trong clip demo sau:
http://www.youtube.com/watch?v=A59WhH5bHqI