在程序開發中只要是多線程肯定永遠以實現Runnable接口爲主,因爲實現Runnable,可以實現資源共享

在程序開發中只要是多線程肯定永遠以實現Runnable接口爲主,因爲實現Runnable接口相比繼承Thread類有如下好處:
->避免點繼承的侷限,一個類可以繼承多個接口。
->適合於資源的共享
以賣票程序爲例,通過Thread類完成:
package org.demo.dff;
class MyThread extends Thread{
    private int ticket=10;
    public void run(){
        for(int i=0;i<20;i++){
            if(this.ticket>0){
                System.out.println("賣票:ticket"+this.ticket--);
            }
        }
    }
};
下面通過三個線程對象,同時賣票:
package org.demo.dff;
public class ThreadTicket {
    public static void main(String[] args) {
        MyThread mt1=new MyThread();
        MyThread mt2=new MyThread();
        MyThread mt3=new MyThread();
        mt1.start();//每個線程都各賣了10張,共賣了30張票
        mt2.start();//但實際只有10張票,每個線程都賣自己的票
        mt3.start();//沒有達到資源共享
    }
}
如果用Runnable就可以實現資源共享,下面看例子:
package org.demo.runnable;
class MyThread implements Runnable{
    private int ticket=10;
    public void run(){
        for(int i=0;i<20;i++){
            if(this.ticket>0){
                System.out.println("賣票:ticket"+this.ticket--);
            }
        }
    }
}
package org.demo.runnable;
public class RunnableTicket {
    public static void main(String[] args) {
        MyThread mt=new MyThread();
        new Thread(mt).start();//同一個mt,但是在Thread中就不可以,如果用同一
        new Thread(mt).start();//個實例化對象mt,就會出現異常
        new Thread(mt).start();
    }
};
雖然現在程序中有三個線程,但是一共賣了10張票,也就是說使用Runnable實現多線程可以達到資源共享目的。

Runnable接口和Thread之間的聯繫:
public class Thread extends Object implements Runnable
發現Thread類也是Runnable接口的子類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章