我運行兩個線程的線程之一是閱讀飼料和得到元素融入全局變量和其他線程被用來從全局變量的信息,並將其將開始下載文件。使兩個線程不睡覺處理獨立/等待/通知
WriteFile的線程的處理時間以毫秒正好和下載線程的處理時間可能需要長達比40秒多,因爲它依賴於文件。
問題:
WriteFile的線程,因爲我不有小姐這是給信息,每隔秒,但如果我運行下面的程序寫文件線程是飼料運行每4secs完全沒有執行,直到下載線程完成其進程。需要
溶液:
甚至下載線程的處理時間是1分鐘以上由時刻i應該調用WriteFile的 15倍(15×4secs)。 (等待或睡眠方法會延遲我的過程,因爲飼料在短短几小時內給我成千上萬的文件)
請仔細閱讀下面的代碼。請編輯和分享知識。
在此先感謝這裏
public class Upload {
static List<DTOs> list = new ArrayList<E>();
String date = "";
Map<String, DTO> map = new HashMap<String, DTO>();
public static void main(String[] args) {
while (true) {
Thread writefile = new Thread() {
public void run() {
write();
// map collection is being used in download thread and also
// list
}
};
Thread download = new Thread() {
public void run() {
downloadProcess(list, date);
}
};
writefile.start();
download.start();
try {
writefile.join();
download.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
您集合不是線程安全的,你的線程只運行一次,爲什麼你有一個以上的線程,目前還不清楚,因爲爲你說一個運行速度與其他花費大部分的時間等待網絡。 –
@PeterLawrey一個線程正在讀取數據源,並且與另一個線程相比速度很快。我開始while循環中的線程。 –
我明白了,但這並沒有說明我爲什麼要這樣做,或者爲什麼這個集合不是線程安全的。提示:它更復雜,但不能保證更快。 –