我有一些類。例如:Java中的多線程
public class Data {
private String name;
public Data(String url) {
// There is download something from the Internet and set field "name".
}
public String getName() {
return name;
}
}
在某些方法中,我需要初始化對象數組的數據。
ArrayList<Data> list = new ArrayList<Data>;
for(int i=0; i<max; i++) {
list.add(new Data("http://localhost/" + String.valueOf(i)));
}
但它是很長的。我想這樣做:
final ArrayList<Data> list = new ArrayList<Data>;
for(int i=0; i<max; i++) {
final int tmp = i;
new Thread() {
public void run() {
list.add(new Data("http://localhost/" + String.valueOf(tmp)));
}
}.start();
}
但主線程結束比其他人早,變量列表是空的。我該怎麼辦?請幫助:)
UP。從互聯網上下載一些數據並不是太快,這就是爲什麼我創建了多個線程。
private ** type ** name? public ** type ** Data() – 11684 2012-08-06 12:45:11
'「http:// localhost /」+ String.valueOf(tmp)'與'「http:// localhost /」+ tmp'相同 – Autar 2012-08-06 12:46:41
你想要什麼實現?加快進程?在每個循環中啓動新線程只會讓你的程序變慢。如果你想並行化,把這個過程分解成智能的垃圾桶,比如每個10個垃圾桶。您必須在線程開銷和工作中的工作之間找到平衡點。 – alexsb 2012-08-06 12:47:08