以不同的速率从InputStream多次读取

时间:2009-10-09 16:39:35

标签: java caching stream inputstream outputstream

我即将加载在线内容(比如音频文件)。如果我只是打开与远程文件的连接(例如,使用new URL().openStream())并将远程InputStream传递给音频播放器,则会逐渐读取 < / strong>来自网络。如果音频播放器库没有要求InputStream获取更多数据,则它不会从网络中读取任何内容,然后当库声明更多时,它会再次读取。

我的问题是,我想在第一个加载过程完成后立即开始缓存下一个在线音频文件。使用正常的InputStream,在完成音频播放时读取完成,这是不好的,因为如果网络带宽允许,我希望它读得更快,以便缓存下一个音频文件。我的音频文件小于3mb,因此可以安全地缓存到内存中。我只预取一个文件,所以没有内存泄漏问题。

是否有任何类型的缓存InputStream,它还允许并发读取?然后我可以运行一个线程并比音频播放器消耗数据更快地缓存音频。

1 个答案:

答案 0 :(得分:2)

我建议您创建第二个线程来执行下载。在此线程中尽快下载文件并将数据推送到主播放线程。