前言
體能狀態先於精神狀態,習慣先於決心,聚焦先於喜好。
聲明線程對象 必須 覆蓋重寫 run() 方法
聲明線程對象 必須 覆蓋重寫 run() 方法
Thread t2=new Thread() {
@Override
public void run() {
super.run();
System.out.println("輸出了內容:2-1");
}
};
啓動線程時 thread.run() 和thread.start()的區別
start()會啓動一個新線程,並在新線程中運行run()方法-這樣就是異步執行了
run() 會在當前線程中執行run(),而並不會啓動新線程,也就說,多線程變成了單線程,run()會當作普通函數
代碼舉例
聲明兩個線程,分別使用 run() 和 start() 查看區別
- 代碼
public class RunTest {
public static void main(String[] args) {
//第一個線程
Thread t=new Thread() {
@Override
public void run() {
super.run();
System.out.println("輸出了內容:1-1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("輸出了內容:1-2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
//第二個線程
Thread t2=new Thread() {
@Override
public void run() {
super.run();
System.out.println("輸出了內容:2-1");
}
};
//run() 會在當前線程中執行run(),而並不會啓動新線程,也就說,多線程變成了單線程
t.run();
t2.run();
System.out.println("分割線");
//start()會啓動一個新線程,並在新線程中運行run()方法-這樣就是異步執行了
t.start();
t2.start();
}
}
- 結果
輸出了內容:1-1
輸出了內容:1-2
輸出了內容:2-1
分割線
輸出了內容:1-1
輸出了內容:2-1
輸出了內容:1-2