在Java編程中,我們總會用到線程相關的概念。而在線程的使用中,start和run兩個方法都非常重要,但是它們之間有什么區別呢?
public class ThreadTest extends Thread { @Override public void run() { System.out.println("ThreadTest Running!"); } public static void main(String[] args) { ThreadTest thread = new ThreadTest(); thread.run(); // thread.start(); } }
在上面的代碼中,ThreadTest類繼承了Thread類,并重寫了其run方法。在main方法中,我們創建了一個ThreadTest對象,并調用了其run方法。我們可以看到,輸出的內容為"ThreadTest Running!"。
但是,如果我們將上面的代碼中thread.run()語句改為thread.start(),那么程序輸出的內容將會發生變化。
public class ThreadTest extends Thread { @Override public void run() { System.out.println("ThreadTest Running!"); } public static void main(String[] args) { ThreadTest thread = new ThreadTest(); // thread.run(); thread.start(); } }
在上面的代碼中,我們將thread.run()改為了thread.start()。那么程序輸出的內容將會是"ThreadTest Running!"加上一些其他內容。這是因為start方法會啟動一個新的線程,而新的線程會在其自己的執行上下文中調用run方法。因此,我們會同時看到"ThreadTest Running!"和其他的輸出內容。
綜上可以看出,run方法只是普通的方法調用,而start方法才是真正啟動線程的方法。