У меня есть класс. Например:Несколько тем в 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;
}
}
В некотором методе мне нужно инициализировать массив объектов Data.
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();
}
Но основная тема заканчивается раньше остальных, а список переменных пуст. Что мне делать? Помощь pls:
UP. Это не слишком быстро, чтобы загрузить некоторые данные из Интернета, поэтому я создал несколько потоков.
частный ** type ** name? public ** type ** Data() – 11684
'' http: // localhost/"+ String.valueOf (tmp)' совпадает с '" http: // localhost/"+ tmp' – Autar
Что вы хотите достичь? Ускорить процесс? Запуск новых потоков в каждом цикле сделает вашу программу медленнее. Если вы хотите распараллелить раскол процесса до интеллектуальных джонков, скажем, по 10 элементов каждый. Вы должны найти баланс между накладными расходами и работой рабочего. – alexsb