2012-07-21 75 views
0

我是高級Java.util.Concurrent包的新手,我正在嘗試使用線程池同時讀取多個文本文件。我需要一種方法將文件名作爲參數傳遞給我的call方法實現。將參數傳遞給Java.util.Concurrent中的Call方法

事情是這樣的:

public String call (String param) 

如果有另一種方式來實現這一目標,我會感謝您的幫助。

+1

邊評論:你在做什麼是I/O密集型而非CPU綁定,並且使用多個線程不太可能提高性能。它實際上可能會是有害的。 – assylias 2012-07-21 16:52:21

+0

每個線程將比讀取文件承載更多的CPU處理 – user1203861 2012-07-21 17:08:18

+0

你想要的基本上是一個函數。 Java不能輕易將函數建模爲一等公民,至少在語法上是如此。對函數式編程有更好支持的語言可能是有意義的。 – 2012-07-22 07:22:47

回答

6

實施Runnable接口時,請將您的參數添加爲類的成員。並在構造函數中添加此成員的初始化。比從運行方法中使用它。

例如:

class ConcurrentFileReader implements Runnable{ 
    String fileName; 

    public ConcurrentFileReader(String fileName){ 
     this.fileName = fileName; 
    } 

    public void run(){ 
     File f = new File(fileName); 
     // whatever 
    } 
} 

這種模式被稱爲「方法對象」

+0

它工作!感謝您的幫助 – user1203861 2012-07-21 17:08:46