Java基礎(三十七)- 執行緒相關
阿新 • • 發佈:2018-11-11
多執行緒常用操作方法:
1:執行緒的命名與取得
class MyThread implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } } public class Test { public static void main(String[] args) throws Exception { MyThread mt = new MyThread() ; new Thread(mt,"執行緒A").start() ; // 設定了執行緒的名字 new Thread(mt).start() ; // 未設定執行緒名字 new Thread(mt).start() ; // 未設定執行緒名字 new Thread(mt).start() ; // 未設定執行緒名字 new Thread(mt).start() ; // 未設定執行緒名字 new Thread(mt,"執行緒B").start() ; // 設定了執行緒的名字 } } //執行結果: 執行緒A Thread-3 執行緒B Thread-2 Thread-1 Thread-0
2:觀察下面程式
class MyThread implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } } public class Test { public static void main(String[] args) throws Exception { MyThread mt = new MyThread() ; new Thread(mt,"執行緒物件").start() ; // 設定了執行緒的名字 mt.run(); // 物件直接呼叫run()方法 } } //執行結果 main 執行緒物件
上述的截圖是隻是在主方法中執行了一些程式碼。然後就啟動了一個JVM程序。
3:主執行緒分為若干個子執行緒
在任何的開發之中,主執行緒可以建立若干個子執行緒,建立子執行緒的目的是可以將一些複雜邏輯或比較耗時的邏輯交由子執行緒處理:
public class Test { public static void main(String[] args) throws Exception { System.out.println("1、執行操作任務一。"); int temp = 0 ; for (int x = 0 ; x < Integer.MAX_VALUE ; x ++) { temp += x ; } System.out.println("2、執行操作任務二。"); System.out.println("n、執行操作任務N。"); } } //執行結果 1、執行操作任務一。 2、執行操作任務二。 n、執行操作任務N。
上述程式碼的執行效果:在第一條語句執行輸出“1、執行操作任務一。”後,會停頓以下,再執行後續的程式碼。
耗時的操作不應該再程式的主體之中;應該啟動一個子執行緒,那麼主執行緒執行就會很快,子執行緒去耗時。
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("1、執行操作任務一。");
new Thread(()->{ // 子執行緒負責統計
int temp = 0 ;
for (int x = 0 ; x < Integer.MAX_VALUE ; x ++) {
temp += x ;
}
}).start();
System.out.println("2、執行操作任務二。");
System.out.println("n、執行操作任務N。");
}
}
實際開發之中就是主執行緒負責流程的控制,而子執行緒負責耗時操作。
就像微博上的操作,一個執行緒負責重新整理,一個執行緒負責呈現微博內容供觀看;重新整理不會影響瀏覽。