Android 台灣中文網

標題: JAVA 學習:Thread 執行緒 應用學習 [打印本頁]

作者: jianrupan    時間: 2022-1-14 16:36
標題: JAVA 學習:Thread 執行緒 應用學習
學習網站:https://www.youtube.com/watch?v=9liopGtCF6w
public class Counter {
    public static int count = 0; // 一個公開靜態屬性 An public static attribute
    public static void main(String[] args) throws Exception {
        // 計算程式執行的時間 Trace running time
        long startTime = System.currentTimeMillis();
        /*
            Test an easy method to increase count 2 billions times
            測試一個簡單的方法, 把數字累加 20 億次
        */
        for(int i=0; i<200000000; i++) {
            Counter.count++;
        }
        long endTime = System.currentTimeMillis();
        System.out.println("單一程序運算時間: "+(endTime-startTime)+" mSecs");
        Counter.count = 0;
        startTime = System.currentTimeMillis();
        /*
            Compute in parallel by Thread
            使用執行續, 讓工作同時分散進行
            We have to design a class implementing Runnable interface and instantiate it.
            必須準備一個實作 Runnable 介面的類別, 並產生物件實體
            Create thread by object instance implementing Runnable interface
            利用實作 Runnable 介面的物件, 建立執行緒
        */
        Thread t1 = new Thread(new Worker(100000000));
        Thread t2 = new Thread(new Worker(100000000));
        t1.start(); // 啟動執行緒工作 Start thread
        t2.start();
        t1.join();  // 等待執行緒工作完成 Wait thread to finish
        t2.join();
        endTime = System.currentTimeMillis();
        System.out.println("雙執行緒運算時間: "+(endTime-startTime)+" mSecs");
    }
}
public class Worker implements Runnable {
    private int times;
    int count;
    // 物件建構子
    public Worker(int times) {
        this.times = times;
    }
    // 實作 Runnable 介面 Implement Runnable interface
    public void run() {
        count = 0;
        for(int i=0; i<this.times; i++) {
            count++;
        }
    }
}
驗證結果:
單一程序運算時間: 2393 mSecs
雙執行緒運算時間: 2239 mSecs






歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1