Tôi không hiểu sự khác biệt giữa bắt đầu và chạy một chuỗi, tôi đã thử nghiệm cả hai phương pháp và chúng kết quả đầu ra giống nhau, trước tiên tôi đã sử dụng kết hợp run() và bắt đầu trên cùng một sợi và họ đã làm chức năng tương tự như sau:Sự khác biệt giữa chạy và bắt đầu một chủ đề
public class TestRunAndStart implements Runnable {
public void run() {
System.out.println("running");
}
public static void main(String[] args) {
Thread t = new Thread(new TestRunAndStart());
t.run();
t.run();
t.start();
}
}
đầu ra là:
running
running
running
sau đó tôi thấy javadoc của phương pháp run() nói rằng: If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns
vì vậy tôi cố gắng sử dụng các phương pháp run() mà không có một Runnable riêng biệt như sau:
public class TestRun extends Thread {
public void run(){
System.out.println("Running Normal Thread");
}
public static void main(String[]args){
TestRun TR=new TestRun();
TR.run();
}
}
và nó cũng thực thi method run() và in Running Normal Thread
mặc dù nó được xây dựng mà không có một Runnable riêng biệt! nên sự khác biệt chính giữa hai phương pháp
không trùng lặp! – naXa
Tuy nhiên đã quá muộn. Nhưng có thể hữu ích cho người khác.Đặt lại câu lệnh SOP phương thức chạy theo "System.out.println ("chạy thread ..." + Thread.currentThread(). getName()); "và sau đó thực hiện chương trình của bạn. Bạn sẽ thấy sự khác biệt. Đầu ra là" chạy thread ... main chạy thread ... main chạy thread ... Thread-0 " – user320676