II. Lập trỡnh đa tuyến trong Java
1. Lớp Thread
Lớp Thread chứa phương thức tạo dựng Thread() cũng như nhiều phương thức hữu ớch cú chức năng chạy, khởi động, tạm ngừng, tiếp tục, giỏn đoạn và ngưng tuyến. Để tạo ra và chạy một tuyến ta cần làm 2 bước:
• Mở rộng lớp Thread và Ghi đố phương thức run()
• Gọi phương thức start() để bắt đầu thực thi tuyến
Lớp Thread khụng cú nhiều phương thức lắm, chỳng chỉ cú một vài phương thức hữu dụng được liệt kờ sau:
• public void run()
được java gọi để thực thi tuyến thi hành, bạn phải ghi đố phương thức này để thực thi nhiệm vụ của tuyến, bởi vỡ phương thức run()của lớp Thread chỉ là phương thức rỗng
• public void start()
khi ta tạo ra tuyến nú chưa thực sự chạy cho đến khi, phương thức start() được gọi, khi start() được gọi thỡ phương thức run() cũng được kớch hoạt
• public void stop()
cú chức năng ngưng tuyến thi hành, phương thức này khụng an toàn, bạn nờn gỏn null vào biến Thread để để dừng tuyến, thay vỡ sử dụng phương thức stop()
• public void suspend()
Cú chức năng tạm ngừng tuyến, trong java 2, phương thức này ớt được sử dụng, bởi vỡ phương thức này khụng nhả tài nguyờn mà nú lắm giữ, do vậy cú thể nguy cơ dẫn đến deadlock ( khoỏ chết ), bạn nờn dựng phương thức wait(), để tạm ngừng tuyến thay vỡ sử dụng phương thức suspend()
• public void resume()
Tiếp tục vận hành tuyến nếu như nú đang bị ngưng, nếu tuyến đang thi hành thỡ phương thức này bị bỏ qua, thụng thường phương thức này được dựng kết hợp với phương thức suspend(), kể từ java 2 phương thức này cựn với phương thức suspend()bị từ chối, do vậy bạn nờn dựng phương thức notify () thay vỡ sử dụng phương thức resume()
• public static void sleep( long millis) Threadows InterruptedException
đặt tuyến thi hành vào trạng thỏi ngủ, trong khoảng thời gian xỏc định bằng mili giõy. chỳ ý sleep() là phương thức tĩnh.
• public void interrupt()
làm giỏn đoạn tuyến thi hành
• public static boolean isInterrupt()
kiểm tra xem tuyến cú bị ngắt khụng
• public void setpriority( int p)
ấn định độ ưu tiờn cho tuyến thi hành, độ ưu tiờn được xỏc định là một số
nguyờn thuộc đoạn [1,10]
• public final void wait() throws InterruptException
đặt tuyến vào trạng thỏi chờ một tuyến khỏc, cho đến khi cú một tuyến khỏc thụng bỏo thỡ nú lại tiếp tục, đõy là phương thức của lớp cơ sở Object
• public final void notify ()
đỏnh thức tuyến đang chờ, trờn đối tượng này
• public final void notifyAll() đỏnh thức tất cả cỏc tuyến đang chờ trờn đối tượng
này
• isAlive() Trả về True, nếu luồng là vẫn cũn tồn tại (sống)
• getPriority() Trả về mức ưu tiờn của luồng
• join() Đợi cho đến khi luồng kết thỳc
• isDaemon() Kiểm tra nếu luồng là luồng một luồng chạy ngầm (deamon)
• setDeamon(boolean on) Đỏnh dấu luồng như là luồng chạy ngầm
vớ dụ: ta tạo ra 2 tuyến thi hành song song, một tuyến thực hiện việc in 200 dũng “Đại học sư phạm kỹ thuật Hưng Yờn”, trong khi tuyến này đang thực thi thỡ cú một tuyến khỏc vẫn tiếp tục in 200 dũng chữ “chào mừng bạn đến với java”
/**
* <p>Title: </p>
* <p>Description: Giao trinh ngon ngu lap trinh Java</p> * <p>Copyright: Copyright (c) 2004</p>
* <p>Company: DHSPKT HY</p> * @author Hoang Trong The
* @version 1.0 */
public class Hello{
public static void main ( String[] args ){ new ChaoDH ().start ();
new ChaoJV ().start (); }
}
class ChaoDH extends Thread{ public void run (){
for ( int i = 1; i <= 200; i++ )
System.out.println ( "Đại học sư phạm kỹ thuật Hưng Yờn" ); }
}
class ChaoJV extends Thread{ public void run (){
for ( int i = 1; i <= 200; i++ )
System.out.println ( "chào mừng bạn đến với java" ); }
}
khi ta chạy chương trỡnh thấy kết quả xen kẽ nhau như ………..
Đại học sư phạm kỹ thuật Hưng Yờn chào mừng bạn đến với java
Đại học sư phạm kỹ thuật Hưng Yờn chào mừng bạn đến với java
Đại học sư phạm kỹ thuật Hưng Yờn chào mừng bạn đến với java
chào mừng bạn đến với java …………...