Computer >> Máy Tính >  >> Lập trình >> Java

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


Lệnh gọi trực tiếp phương thức run () của đối tượng Thread không bắt đầu một chuỗi riêng biệt và nó có thể được thực thi trong luồng hiện tại. Để thực thi Runnable.run từ trong một chuỗi riêng biệt, hãy thực hiện một trong các thao tác sau

  • Tạo một chuỗi bằng cách sử dụng Runnable đối tượng và gọi start () trên Chủ đề.
  • Xác định lớp con của đối tượng Luồng và ghi đè định nghĩa của run () của nó phương pháp. Sau đó, tạo một phiên bản của lớp con này và gọi start () trực tiếp trên phiên bản đó.

Ví dụ

public class ThreadRunMethodTest {
   public static void main(String args[]) {
      MyThread runnable = new MyThread();
      runnable.run(); // Call to run() method does not start a separate thread
      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ụ trên, chuỗi chính, ThreadRunMethodTest , gọi chuỗi con, MyThread , sử dụng phương thức run (). Điều này làm cho chuỗi con chạy đến hoàn thành trước khi phần còn lại của chuỗi chính được thực thi, do đó " Chuỗi con "được in trước" Chuỗi chính ".

Đầu ra

Child Thread
Main Thread