JavaはRunnableインタフェース方式を実現してマルチスレッドの優位性を実現する

4476 ワード

1.Threadの継承
package com.test.thread;

public class TicketThread1 extends Thread {
    private int ticket = 5;

    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            if (ticket > 0) {
                System.out.println("Thread  ==" + ticket--);
                ;
            }
        }
    }
}

2.Runnableの実装
package com.test.thread;

public class TicketThread2 implements Runnable {
    private int ticket = 5;

    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            if (ticket > 0) {
                System.out.println("Runnable  ==" + ticket--);
                ;
            }
        }

    }
}

3.テストTest
package com.test.thread;

public class TicketTest {
    public static void main(String[] args) {
        TicketThread1 ticket1 = new TicketThread1();
        TicketThread1 ticket2 = new TicketThread1();
        TicketThread1 ticket3 = new TicketThread1();
        ticket1.start();
        ticket2.start();
        ticket3.start();

        TicketThread2 ticketRunnable = new TicketThread2();
        new Thread(ticketRunnable).start();
        new Thread(ticketRunnable).start();
        new Thread(ticketRunnable).start();

    }
}

4.出力結果:
Thread  ==5
Thread  ==5
Thread  ==5
Thread  ==4
Thread  ==4
Thread  ==3
Thread  ==4
Thread  ==2
Thread  ==3
Thread  ==1
Thread  ==3
Thread  ==2
Thread  ==1
Thread  ==2
Runnable  ==5
Thread  ==1
Runnable  ==4
Runnable  ==1
Runnable  ==3
Runnable  ==2

結論:プログラムの実行結果から,継承Threadは実際には3つのスレッドでそれぞれ5枚のチケットを販売し,Runnableの3つのスレッドで5枚のチケットを共同で販売していることが分かった.
まとめ:Runnableインタフェースを実現することはThreadを継承するよりも利点がある:1同じプログラムコードの複数のスレッドに適して統一リソースを処理する場合②java単一継承特徴による限界を避けることができる③開発プログラムの堅牢性を強化し、コードは複数のスレッドで共有でき、コードとデータは独立している
そこで、マルチスレッド操作を実現するためにRunnableインタフェース方式を開発しました.