首先我想說我正在從python工作到更復雜的代碼。我現在正在使用Java,而且我非常新。我知道Java非常擅長多線程,這很好,因爲我正在使用它來處理數TB的數據。Java多線程和迭代器,應該很簡單,初學者
的數據輸入簡單地輸入到迭代器,我有一個封裝運行功能,它有一個線從所述迭代器的一類,做一些分析,然後將分析寫入到一個文件中。線程必須共享的唯一信息是他們正在寫入的對象的名稱。簡單的權利?我只想讓每個線程同時執行run函數,這樣我們就可以快速地遍歷輸入數據。在Python中,它會很簡單。
from multiprocessing import Pool
f = open('someoutput.csv','w');
def run(x):
f.write(analyze(x))
p = Pool(8);
p.map(run,iterator_of_input_data);
所以在Java中,我有我的10000行的分析代碼,並可以很容易通過我的輸入迭代通過它我run函數這反過來又對我所有的分析代碼將其發送到輸出對象調用。
public class cool {
...
public static void run(Input input,output) {
Analysis an = new Analysis(input,output);
}
public static void main(String args[]) throws Exception {
Iterator iterator = new Parser(File(input_file)).iterator();
File output = File(output_object);
while(iterator.hasNext(){
cool.run(iterator.next(),output);
}
}
}
我想要做的就是獲取多個線程,獲取迭代器對象並執行run語句。一切都是獨立的。我一直在看Java多線程的東西,但其通過網絡交流,共享數據等。這是簡單的,因爲我認爲它是?如果有人能夠指引我走向正確的方向,我會很樂意做這項工作。
感謝
您也可以使用[Executors工廠(http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html)。 – assylias
@assylias我們走了,我正在找那個,謝謝! – udoprog