我实现了一个下载管理器,除了我注意到一件事,有时线程会在写入文件时阻塞一段时间(50毫秒到10秒),我在Android上运行这个程序(基于Linux) ),我的猜测是,如果OS级别中有某种缓冲区需要刷新,我的写入实际写入该缓冲区,如果该缓冲区已满,则写入需要等待
我的问题是可能导致阻塞的可能原因是什么?
答案 0 :(得分:3)
众所周知,IO是一种“阻塞”活动,因此您的问题应该是“当您的程序忙于等待IO完成时应该怎么做”
采用一些众所周知的并发策略和基于事件的编程模式是一个良好的开端
答案 1 :(得分:0)
- 我已经按照以下方式完成了文件的编写和阅读,从未遇到任何问题。
<强>例如强>
File f = new File("Path");
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
- 您也可以尝试使用Java中的NIO
包。