0
我是高級Java.util.Concurrent包的新手,我正在嘗試使用線程池同時讀取多個文本文件。我需要一種方法將文件名作爲參數傳遞給我的call方法實現。將參數傳遞給Java.util.Concurrent中的Call方法
事情是這樣的:
public String call (String param)
如果有另一種方式來實現這一目標,我會感謝您的幫助。
我是高級Java.util.Concurrent包的新手,我正在嘗試使用線程池同時讀取多個文本文件。我需要一種方法將文件名作爲參數傳遞給我的call方法實現。將參數傳遞給Java.util.Concurrent中的Call方法
事情是這樣的:
public String call (String param)
如果有另一種方式來實現這一目標,我會感謝您的幫助。
實施Runnable
接口時,請將您的參數添加爲類的成員。並在構造函數中添加此成員的初始化。比從運行方法中使用它。
例如:
class ConcurrentFileReader implements Runnable{
String fileName;
public ConcurrentFileReader(String fileName){
this.fileName = fileName;
}
public void run(){
File f = new File(fileName);
// whatever
}
}
這種模式被稱爲「方法對象」
它工作!感謝您的幫助 – user1203861 2012-07-21 17:08:46
邊評論:你在做什麼是I/O密集型而非CPU綁定,並且使用多個線程不太可能提高性能。它實際上可能會是有害的。 – assylias 2012-07-21 16:52:21
每個線程將比讀取文件承載更多的CPU處理 – user1203861 2012-07-21 17:08:18
你想要的基本上是一個函數。 Java不能輕易將函數建模爲一等公民,至少在語法上是如此。對函數式編程有更好支持的語言可能是有意義的。 – 2012-07-22 07:22:47