JAVA版線程基礎案例二:實現Runnable完成線程

實現Runnable完成線程,這樣的好處是靈活,因爲可以繼承其他類
同時也要重寫run()方法來描述線程的任務信息,由新的類的 對象來構建Thread類的對象,調用strat方法來開啓線程(這種方式常用)

線程競爭關係圖:
在這裏插入圖片描述

public static void main(String[] args) {
        RDemo r=new RDemo("111");
        //由於沒有繼承Threa類,所以沒有start()方法來啓動線程
        //所以需要創建線程對象,完成線程啓動
        //由於Thread類和我們自己創建的RDemo都實現了Runnable,所以他們是同類關係
        //所以是同類對象給本類對象提供了新的功能-----這是裝飾者設計模式
        Thread t1=new Thread(r);
        //開啓線程
        t1.start();

        //開啓主線程
        for (int i = 0; i < 20; i++) {
            System.out.println("這是主線程:"+i);
            //休眠只是爲了看效果
            try {
                //休眠有可能會不能重啓,所以異常處理
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//實現Runnable完成線程,這樣的好處是靈活,並且可以繼承其他類
class RDemo implements Runnable{
    //定義一個線程名字,用來區分線程
    private String name;

    public RDemo(String name){
        this.name=name;
    }

    //需要重寫run()方法,來描述線程的內容(線程需要執行的功能)
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(name+":i="+i);
            //還是使用休眠,看效果,實際上不用休眠,這裏是爲了效果明顯
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }

運行結果:
在這裏插入圖片描述
上一篇文章使用了繼承Thread類,實現線程:
JAVA版,線程初級入門案例一:繼承Thread類創建線程
下一篇:線程不安全的搶票程序(ps.我把輸出改成了搶糖果)
JAVA版本,線程三:線程實現賣票程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章