天天看點

java實作多線程的兩種方法的比較

先看一下java線程運作時各個階段的運作狀态

java實作多線程的兩種方法的比較

java實作多線程有兩種方法

1、繼承thread類

2、實作runnable接口

這兩種方法的共同點:

不論用哪種方法,都必須用thread(如果是thead子類就用它本身)産生線程,然後再調用start()方法。

兩種方法的不同點:

1、繼承thread類有一個缺點就是單繼承,而實作runnable接口則彌補了它的缺點,可以實作多繼承

2、繼承thread類必須如果産生runnable執行個體對象,就必須産生多個runnable執行個體對象,然後再用thread産生多個線程;而實作runnable接口,隻需要建立一個實作這個類的執行個體,然後用這一個執行個體對象産生多個線程。即實作了資源的共享性

基于以上兩點是以建議用第二種方法

下面用例子來做說明

程式1:

java實作多線程的兩種方法的比較

package com.dr.runnable1;

java實作多線程的兩種方法的比較

//一個類隻要繼承了thread類,則此類就是多線程類

java實作多線程的兩種方法的比較

class mythread extends thread

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

{

java實作多線程的兩種方法的比較

    private string name;

java實作多線程的兩種方法的比較

    public mythread(string name)

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

        this.name=name;

java實作多線程的兩種方法的比較

    }

java實作多線程的兩種方法的比較

    //如果要使用多線程,則必須有一個方法的主體

java實作多線程的兩種方法的比較

    public void run()

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

        //列印輸出

java實作多線程的兩種方法的比較

        for(int i=0;i<10;i++)

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

            system.out.println(this.name+"----->運作、、、、");

java實作多線程的兩種方法的比較

        }

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

}

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

public class demo1 

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

    public static void main(string args[])

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

//第一種方法

java實作多線程的兩種方法的比較

         runnable r1=new mythread("線程a");

java實作多線程的兩種方法的比較

        runnable r2=new mythread("線程b");

java實作多線程的兩種方法的比較

        runnable r3=new mythread("線程c");

java實作多線程的兩種方法的比較

       thread t1=new thread(r1);

java實作多線程的兩種方法的比較

       thread t2=new thread(r2);

java實作多線程的兩種方法的比較

       thread t3=new thread(r3);

java實作多線程的兩種方法的比較

       t1.start();

java實作多線程的兩種方法的比較

       t2.start();

java實作多線程的兩種方法的比較

       t3.start();

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

  //        mt1.run();//線程執行,使用start方法

java實作多線程的兩種方法的比較

//        mt2.run();

java實作多線程的兩種方法的比較

//        mt3.run();

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

//第二種方法

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

//       mythread mt1=new mythread("線程a");

java實作多線程的兩種方法的比較

//        mythread mt2=new mythread("線程b");

java實作多線程的兩種方法的比較

//        mythread mt3=new mythread("線程c");

java實作多線程的兩種方法的比較

//        mt1.start();

java實作多線程的兩種方法的比較

//        mt1.start();//線程隻能啟動一次

java實作多線程的兩種方法的比較

//        mt2.start();

java實作多線程的兩種方法的比較

//        mt3.start(); 

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

    } 

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

程式的運作結果是:

java實作多線程的兩種方法的比較

這是繼承了thread類,第一種方法産生多個runnable執行個體對象,然後用thread産生多個線程

第二種方法,因為這個類已經繼承了thread類,是以就可以直接利用它本身産生多個線程

程式2:

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

class mythread1 implements runnable

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

    private  int ticket=10;

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

        for(int i=0;i<500;i++)

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

            if(this.ticket>0)

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

                system.out.println("賣票----->"+(this.ticket--));

java實作多線程的兩種方法的比較

            }

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

public class demo2 

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

           mythread1 mt=new mythread1();

java實作多線程的兩種方法的比較

        thread t1=new thread(mt);

java實作多線程的兩種方法的比較

        thread t2=new thread(mt);

java實作多線程的兩種方法的比較

        thread t3=new thread(mt);

java實作多線程的兩種方法的比較

        t1.start();

java實作多線程的兩種方法的比較

        t2.start();

java實作多線程的兩種方法的比較

        t3.start();

java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較
java實作多線程的兩種方法的比較

程式運作結果:

java實作多線程的兩種方法的比較

這個程式是實作runnable了,産生一類的執行個體對象,然後用thread産生多個線程。

打賞

<b></b>贊

<b></b>收藏

<b></b>評論

分享

微網誌

qq

微信

java實作多線程的兩種方法的比較

舉報

上一篇:簡單應用小程式(類與類之間的關系調用)

下一篇:用多線程模拟生産零件系統程式

java實作多線程的兩種方式比較及差別,線程程式設計的兩種方法,python實作獎金計算兩種方法的比較,(轉載)java雲計算兩種方法的比較,java多線程實作的兩種方式,java 多線程的兩種方法,java中實作多線程般使用兩種方法,java建立線程的兩種方法,java建立程序的兩種方法,java聲明變量的兩種方法