2009-05-27 61 views

回答

9

您應該嘗試使用來自Sun的the java tutorials併發性。

+1

和http://www.javaconcurrencyinpractice.com/(該網站,最好是書)。 – 2009-05-27 18:34:07

+0

是的,這是一本很棒的書,如果他想追求這一點,而不是非常簡單的例子,這絕對是值得的。 – 2009-05-27 18:36:25

0

圖像處理和檢索Web數據通常會阻止用戶界面,使其成爲多線程設計的理想選擇。

1

ServerSocket示例非常簡單,測試和使用線程非常簡潔。

3

我推薦Doug Lea的書Concurrent Programming in Java: Design Principles and Patterns。 Doug Lea是我在紐約州立大學奧斯威戈分校的教授之一 - 偉大的教授,傑出的人物。這本書非常出色,它爲您提供了大量有關使用Java編寫好的多線程代碼的信息。

哦是啊,Doug Lea寫了大部分java.util.concurrent。所以他對這個主題是一個很好的權威;-)

0

我開始寫批處理工具,決定我不喜歡等待,並尋找方式來並行處理文件。請原諒僞碼;我的java真的很生疏。

考慮,你做一些事情,需要一段時間多次的情況:

foreach(var item in list) 
{ 
    doSomethingSlow(item); 
} 

在這種情況下,它可能是有益的添加一些代碼派遣打造一個線程出來的方法調用。我認爲正常的java方法來做到這一點將是如下脫離匿名線程。如果你需要能夠指向線程來獲得更多的控制,取消等等,你將不得不實現並實例化一個繼承自Thread的類。

new Thread({ 
    public void run(){ 
     doSomethingSlow(item); 
    } 
}).start(); 

注:我沒有檢查,這是正確的語法,在你自己的危險使用。

這種方法應該可以爲您節省一些時間,打開思路平行的大門。您還可以查看loop unwinding並使用現在提供的許多不同的並行類庫。

我通常不喜歡玩具代碼的例子,而更喜歡通過創建有用的東西來學習,所以在一些教程中玩了一段時間的想法後,我建議你開始在所有項目中放入一些合理的併發代碼每一次都是有道理的。我不建議你試着讓每一行代碼都是並行的,因爲它調試起來非常困難,並且引入了太多的實例化線程的開銷。

相關問題