我运行两个线程的线程之一是阅读饲料和得到元素融入全局变量和其他线程被用来从全局变量的信息,并将其将开始下载文件。使两个线程不睡觉处理独立/等待/通知
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循环中的线程。 –
我明白了,但这并没有说明我为什么要这样做,或者为什么这个集合不是线程安全的。提示:它更复杂,但不能保证更快。 –