程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java根本教程之經常使用的完成多線程的兩種方法 java多線程教程

java根本教程之經常使用的完成多線程的兩種方法 java多線程教程

編輯:關於JAVA

java根本教程之經常使用的完成多線程的兩種方法 java多線程教程。本站提示廣大學習愛好者:(java根本教程之經常使用的完成多線程的兩種方法 java多線程教程)文章只能為提供參考,不一定能成為您想要的結果。以下是java根本教程之經常使用的完成多線程的兩種方法 java多線程教程正文


關於線程池的內容,我們今後會具體引見;如今,先對的Thread和Runnable停止懂得。本章內容包含:
Thread和Runnable的簡介
Thread和Runnable的異同點
Thread和Runnable的多線程的示例

Thread和Runnable簡介
Runnable 是一個接口,該接口中只包括了一個run()辦法。它的界說以下:

public interface Runnable {
    public abstract void run();
}

Runnable的感化,完成多線程。我們可以界說一個類A完成Runnable接口;然後,經由過程new Thread(new A())等方法新建線程。

Thread 是一個類。Thread自己就完成了Runnable接口。它的聲明以下:

public class Thread implements Runnable {}
Thread的感化,完成多線程。

Thread和Runnable的異同點
Thread 和 Runnable 的雷同點:都是“多線程的完成方法”。
Thread 和 Runnable 的分歧點:
Thread 是類,而Runnable是接口;Thread自己是完成了Runnable接口的類。我們曉得“一個類只能有一個父類,然則卻能完成多個接口”,是以Runnable具有更好的擴大性。
另外,Runnable還可以用於“資本的同享”。即,多個線程都是基於某一個Runnable對象樹立的,它們會同享Runnable對象上的資本。
平日,建議經由過程“Runnable”完成多線程!

Thread和Runnable的多線程示例
1. Thread的多線程示例

上面經由過程示例更好的懂得Thread和Runnable,自創網上一個例子比擬具有壓服性的例子。


 // ThreadTest.java 源碼
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(this.getName()+" 賣票:ticket"+this.ticket--);
            }
        }
    }
};

public class ThreadTest { 
    public static void main(String[] args) { 
        // 啟動3個線程t1,t2,t3;每一個線程各賣10張票!
        MyThread t1=new MyThread();
        MyThread t2=new MyThread();
        MyThread t3=new MyThread();
        t1.start();
        t2.start();
        t3.start();
    } 
}
 

運轉成果:


Thread-0 賣票:ticket10
Thread-1 賣票:ticket10
Thread-2 賣票:ticket10
Thread-1 賣票:ticket9
Thread-0 賣票:ticket9
Thread-1 賣票:ticket8
Thread-2 賣票:ticket9
Thread-1 賣票:ticket7
Thread-0 賣票:ticket8
Thread-1 賣票:ticket6
Thread-2 賣票:ticket8
Thread-1 賣票:ticket5
Thread-0 賣票:ticket7
Thread-1 賣票:ticket4
Thread-2 賣票:ticket7
Thread-1 賣票:ticket3
Thread-0 賣票:ticket6
Thread-1 賣票:ticket2
Thread-2 賣票:ticket6

成果解釋:
(01) MyThread繼續於Thread,它是自界說個線程。每一個MyThread都邑賣出10張票。
(02) 主線程main創立並啟動3個MyThread子線程。每一個子線程都各自賣出了10張票。

 

2. Runnable的多線程示例

上面,我們對下面的法式停止修正。經由過程Runnable完成一個接口,從而完成多線程。


// RunnableTest.java 源碼
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(Thread.currentThread().getName()+" 賣票:ticket"+this.ticket--);
            }
        }
    }
};

public class RunnableTest { 
    public static void main(String[] args) { 
        MyThread mt=new MyThread();

        // 啟動3個線程t1,t2,t3(它們共用一個Runnable對象),這3個線程一共賣10張票!
        Thread t1=new Thread(mt);
        Thread t2=new Thread(mt);
        Thread t3=new Thread(mt);
        t1.start();
        t2.start();
        t3.start();
    } 
}

運轉成果:


Thread-0 賣票:ticket10
Thread-2 賣票:ticket8
Thread-1 賣票:ticket9
Thread-2 賣票:ticket6
Thread-0 賣票:ticket7
Thread-2 賣票:ticket4
Thread-1 賣票:ticket5
Thread-2 賣票:ticket2
Thread-0 賣票:ticket3
Thread-1 賣票:ticket1

成果解釋:
(01) 和下面“MyThread繼續於Thread”分歧;這裡的MyThread完成了Thread接口。
(02) 主線程main創立並啟動3個子線程,並且這3個子線程都是基於“mt這個Runnable對象”而創立的。運轉成果是這3個子線程一共賣出了10張票。這解釋它們是同享了MyThread接口的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved