1. 程式人生 > 其它 >執行緒 Thread

執行緒 Thread

  • 程序與執行緒
  1. 程序:程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。
  2. 執行緒:執行緒(英語: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最好