Я обнаружил, что есть (по крайней мере) 2 основных способа сделать это, когда ваш поток получает информацию или получает информацию (в вашем случае URL)
1) получает информацию:
что вы хотите сделать, это сохранить ссылку на объект, содержащий необходимые данные (например, URL) в вашей ветке, и когда вы будете готовы, поток получит следующий элемент / URL для загрузки.
public class MapTimer extends TimerTask{
public void run() {
...
}
private URLGenerator urlGenerator = null;
public MapTimer(URLGenerator urlGen){
...
}
Это даст вам возможность получить следующий URL, когда ваша тема свободна (конечно, с помощью if (urlGen! = Null))
2) Получает информацию
Работает лучше для случаев, когда поток вызывается только тогда, когда этого хочет остальная часть программы (ввод данных пользователем и т. Д.)
public class MapTimer extends TimerTask{
public void run() {
...
}
private URL urlToLoad = null;
public void setURL(URL urlToLoad){
...
//store and wake up thread
}
таким образом, ваш поток получает с помощью установщика данные, необходимые для его работы, обрабатывает его, а затем ожидает, когда ему будут отправлены следующие данные (конечно, вам нужно быть осторожным с такими проблемами потока, как множественные вызовы и т. Д.)
Надеюсь, это поможет вам
Jason