繁体   English   中英

java流并行读写

[英]java stream parallel read/write

我想从互联网上流式播放音频文件。 我正在使用此代码:

int readBytes = 0;
    byte[] audioBuffer = new byte[this.EXTERNAL_BUFFER_SIZE];

    readBytes = in.read(audioBuffer, 0, audioBuffer.length);
    while (readBytes != -1) {
        readBytes = in.read(audioBuffer, 0, audioBuffer.length);
        if (readBytes >= 0) {
            dataLine.write(audioBuffer, 0, readBytes);
        }
    }

问题是当Stream正在读取时,它不在写入。 因此,音乐不是每隔几秒钟短时间播放一次。 所以我想知道是否有一种方法可以使流同时从输入流读取并写入数据线,从而使写入永不暂停读取。

就在这里。 当您尝试一次执行两项或多项操作时,您正在寻找多线程。

虽然这不是您可以在5分钟内学到的东西,所以您应该在这里阅读

例如 :

public class Printer implements Runnable{

 String name;
 public Printer(String name){
 this.name=name;
 }
 public void run(){

  while(true){
   System.out.println("i am thread"+name);
  //in your case read or write bytes to dataline here;
  }
}
public static void main(String[] args){
 Printer print1= new Printer("a");
 Printer print2 = new Printer("b");
 new Thread(print1).start();
 new Thread(print2).start();
 }
}

由于未同步,这将继续以未定义的顺序打印“我是线程a”“我是线程b”,因此它可以提供aabbbbaababaaba而不是ababababab,但其思想是它们都同时运行。

这只是有关如何使用线程,缺少同步性和安全性以及在处理线程之前应了解的内容的粗略示例。

我不确定这是否可行,但是dataLine.write(audioBuffer, 0, in.read()); 你想做什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM