Re: [問題] thread問題!!!
※ 引述《king08 (糊塗蛋)》之銘言:
: ※ 引述《H45 (!H45)》之銘言:
: : Future Pattern:
: : http://caterpillar.onlyfun.net/Gossip/DesignPattern/FuturePattern.htm
: : 把該變數宣告在需要他的物件能夠取得的地方即可。
: : 如果您不熟 Future Pattern, 上面的連結所描述的內容可能太過於簡略
: : 請試著用 Google 找以下的關鍵字:Lecture 10: Java Threads Programming 3
: : 我稍微看了一下,內容有比較詳細一點,參考看看是否適用於您的應用吧。
: 在Java 5.0中你可以用Future這個Interface
: 相關說明:
: http://doc.java.sun.com/DocWeb/api/java.util.concurrent.Future%3CV%3E
我稍微研究了一下 java.util.concurrent 之中與 Future 有關的類別與介面
消化之後利用 Future, FutureTask, Executor 寫出一個範例去計算 1+2+...+10000
public static void main(String[] args) throws Exception {
// 建立未來物件,這個東西是未來會運算完畢並且回傳一個物件的。
// 此例是回傳一個 Integer 物件。
FutureTask<Integer> future = new FutureTask<Integer>(
new Callable<Integer>() {
public Integer call() {
// count = 0+1+2+...+10000
int count = 0;
for (int i = 0; i < 10000; i++) {
count += i;
}
return count;
}
});
// 建立單執行緒去處理掉這個未來物件
Executors.newSingleThreadExecutor().execute(future);
// 處理中
System.out.println("Executing...");
// 等待未來物件建立完畢,並且將結果取出來
System.out.println(future.get());
// 結束
System.exit(0);
}
寫完之後的心得是
如果有時間的話,不妨學習一下怎麼使用 java.util.concurrent.*
這是不錯的經驗,因為學會之後就不用自己去實作 Future Pattern 了,真省功!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
推
06/25 13:15, , 1F
06/25 13:15, 1F
討論串 (同標題文章)