編寫多線程程序有幾種實現方式?


Java 5 以前實現多線程有兩種實現方法:一種是繼承 Thread 類;另一種是實現

Runnable 接口。兩種方式都要通過重寫 run()方法來定義線程的行為,推薦使用

后者,因為 Java 中的繼承是單繼承,一個類有一個父類,如果繼承了 Thread 類

就無法再繼承其他類了,顯然使用 Runnable 接口更為靈活。

補充:Java 5 以后創建線程還有第三種方式:實現 Callable 接口,該接口中的 call

方法可以在線程執行結束時產生一個返回值,代碼如下所示:

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

class MyTask implements Callable<Integer> {

276 頁 共 485 頁private int upperBounds;

public MyTask(int upperBounds) {

this.upperBounds = upperBounds;

}

@Override

public Integer call() throws Exception {

int sum = 0;

for(int i = 1; i <= upperBounds; i++) {

sum += i;

}

return sum;

}

}

class Test {

public static void main(String[] args) throws Exception {

List<Future<Integer>> list = new ArrayList<>();

ExecutorService service = Executors.newFixedThreadPool(10);

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

list.add(service.submit(new MyTask((int) (Math.random() *

100))));

}

int sum = 0;

for(Future<Integer> future : list) {

// while(!future.isDone()) ;

sum += future.get();

277 頁 共 485 頁}

System.out.println(sum);

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM