Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Điều gì xảy ra nếu gọi trực tiếp phương thức run() trong Java?

Gọi trực tiếp phương thức run() của đối tượng Thread không khởi động luồng riêng biệt và nó được thực thi trong luồng hiện tại. Để thực thi Runnable.run từ một luồng riêng, hãy làm một trong sau:

  • Tạo thread dùng đối tượng Runnable và gọi start() trên Thread.
  • Định nghĩa subclass của Thread và ghi đè run(). Tạo instance của subclass và gọi start() trực tiếp.

Ví dụ

public class ThreadRunMethodTest { 
    public static void main(String args[]) { 
        MyThread runnable = new MyThread(); 
        runnable.run(); // Gọi run() không khởi động thread riêng 
        System.out.println("Main Thread"); 
    } 
} 

class MyThread extends Thread { 
    public void run() { 
        try { 
            Thread.sleep(1000); 
        } catch (InterruptedException e) { 
            System.out.println("Child Thread interrupted."); 
        } 
        System.out.println("Child Thread"); 
    } 
}

Trong ví dụ, main thread ThreadRunMethodTest gọi child thread MyThread bằng run(). Child thread chạy đến cuối trước khi main thread tiếp tục, nên "Child Thread" in ra trước "Main Thread".

Kết quả

Child Thread Main Thread