Java有兩種方式實現多執行緒,第一個是繼承Thread類,第二個是實現Runnable介面。他們之間的聯絡:

1、Thread類實現了Runable介面。

2、都需要重寫裡面Run方法。

他們之間的區別“

1、實現Runnable的類更具有健壯性,避免了單繼承的侷限。

2、Runnable更容易實現資源共享,能多個執行緒同時處理一個資源。

看一下以繼承Thread的賣票例子:

public static void main(String[] args) {
		// TODO Auto-generated method stub
			
			new MyThread().start();
			new MyThread().start();
			
	}


class MyThread extends Thread{  
    private int ticket = 5;  
    public void run(){  
    	 while(true){
    		 System.out.println("Thread ticket = " + ticket--);  
             if(ticket < 0){  
                break;
             }  
         }  
    }  
}  
輸出結果:
Thread ticket = 5
Thread ticket = 5
Thread ticket = 4
Thread ticket = 4
Thread ticket = 3
Thread ticket = 2
Thread ticket = 3
Thread ticket = 1
Thread ticket = 2
Thread ticket = 0
Thread ticket = 1
Thread ticket = 0

從以上輸出結果可以看出,我們創造了2個多執行緒物件,他們分別實現了買票任務,也就是一共賣了12張票。
實現Runnable介面的賣票例子:
<pre name="code" class="html">public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread2 m=new MyThread2();
			new Thread(m).start();
			new Thread(m).start();
		
			
	}
class MyThread2 implements Runnable{  
    private int ticket = 5;  
    public void run(){  
    	 while(true){
    		 System.out.println("Runnable ticket = " + ticket--);  
             if(ticket < 0){  
                break;
             }  
         } 
    }  
}  
輸出結果:
Runnable ticket = 5
Runnable ticket = 4
Runnable ticket = 3
Runnable ticket = 2
Runnable ticket = 1
Runnable ticket = 0


從結果我們可以看到,雖然我們聲明瞭兩個執行緒,但是一共賣了6張票。他們實現了資源共享。PS:在實際開發中,一定要注意命名規範,其次上面實現Runable介面的例子由於同時操作一個資源,會出現執行緒不安全的情況,如果情況需要,我們需要進行同步操作。

.