混亂,我竟然在Java領域非常初學者,目前正通過多線程概念關於多線程
我碰到一個程序,並有關於程序本身的某些疑慮。
以下是我的程序
public class SecondThreadDemo implements Runnable {
public void run() {
System.out.print(Thread.currentThread().getName());
}
}
class B implements Runnable {
public void run() {
new SecondThreadDemo().run();
new SecondThreadDemo().run();
new Thread(new SecondThreadDemo(), "T3").run();
new Thread(new SecondThreadDemo(), "T2").start();
new SecondThreadDemo().run();
new Thread(new SecondThreadDemo(), "T3").start();
}
}
class C {
public static void main(String[] args) {
new Thread(new B(), "T1").start();
}
}..
現在我所期待的是下面的輸出
T1T1T1T1T3T3
但它的到來就像
T1T1T1T1T2T3
有人可以澄清輸出?
有run'和'start'之間'的差。'Runnable'本身不是'Thread',所以它將與你的其他代碼一起執行(就像調用其他方法一樣)。在你的例子中,'start'安排一個可以'Runnable'運行的線程。也將有不同每次運行它的時候,它歸結爲如何線程的調度工作 – MadProgrammer
@MadProgrammer的事情中唯一讓我困惑的是,爲什麼̶O̶P̶'̶s̶代碼̶'̶T̶2̶'̶兩次在輸出沒關係OP已經解決這個。將該評論轉換爲答案。 –
抱歉,我輸入了錯誤的輸出。請糾正錯誤!請原諒我 –