Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

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

    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

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi ttaiinfo
    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
    Ủa, sao không thấy nói đến method join() nhỉ.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •