執行緒 Thread
阿新 • • 發佈:2022-02-10
- 程序與執行緒
- 程序:程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。
- 執行緒:執行緒(英語:thread)是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。
- 執行緒的實現
繼承Thread類
1 Thread t = new T1(); 2 t.start(); 3 Thread t1 = new T1(); 4 t1.start(); 5 System.out.println(Thread.currentThread().getName());
join() 和 yield()
join:A.join()等待A執行緒,讓A先執行
yield:禮讓
1 //Thread類 2 //繼承 3 class T1 extends Thread{ 4 5 Thread t; 6 @Override 7 public void run() { 8 // 執行緒裡面需要執行的內容 9 for(int i = 1 ; i <= 100 ; i++) { 10 if( i == 50 ) { 11 try {12 if(t!=null) { 13 t.join(1);//join是插隊,裡面的數字代表插隊多少毫秒,過了這個時間之後就繼續搶佔 14 } 15 } catch (InterruptedException e) { 16 // TODO Auto-generated catch block 17 e.printStackTrace();18 } 19 Thread.yield();//如果執行到50,就禮讓一下 20 } 21 System.out.println(Thread.currentThread().getName() + "----------" + i); 22 } 23 } 24 }
yeild的主函式
1 T1 t1 = new T1();
2 T1 t2 = new T1();
3 t1.t = t2;
4 t2.t = null;
5 t1.start();
6 t2.start();
實現Runnable介面
Runnable和Thread的區別
1 //Runnable和Thread的區別就是Runnable裡的資源可以讓別人共享 2 //r1執行緒的資源可以向兩條執行緒裡面共享 3 Runnable r1 = new R1(); 4 Thread t1 = new Thread(r1); 5 Thread t2 = new Thread(r1); 6 t1.start(); 7 t2.start(); 8 Thread.sleep(10);//main函式呼叫別的執行緒的時候,自己不會停止,有可能另一個執行緒還沒執行完,輸出會什麼都沒有 9 System.out.println(((R1)r1).strB);
1 class R1 implements Runnable{ 2 StringBuilder strB = new StringBuilder(); 3 @Override 4 public void run() { 5 for(int i = 1 ; i < 10 ; i++) { 6 strB.append(i); 7 //在這裡不可以throws只能try catch,因為Runnable裡面的run沒有throws 8 //只能更精確,不能更寬泛 9 try { 10 Thread.sleep(1); 11 } catch (InterruptedException e) { 12 e.printStackTrace(); 13 } 14 } 15 } 16 }
平常使用Runnable最好