Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java串行通信与多线程_Java_Multithreading_Serial Port_Blockingqueue - Fatal编程技术网

Java串行通信与多线程

Java串行通信与多线程,java,multithreading,serial-port,blockingqueue,Java,Multithreading,Serial Port,Blockingqueue,我正在将数据从Arduino读入我构建的Java程序。我想对数据做的是图形,并可能同时将其存储在CSV中。绘图和存储不应该太难。我担心的是做得足够快,不会丢失任何传入的数据。因此,我这里的问题主要是设计问题 我目前的想法是:我有一个主要的事件监听器,它接收所有传入的串行数据并将其放入队列中。我有一个线程,我们称之为线程,在另一端等待数据。在将数据保存到文件之前,该线程将立即将数据发送到另一个线程B。线程B担心数据的图形化 但我很好奇,当线程A从队列中提取数据时,试图从事件侦听器进入的所有数据会发

我正在将数据从Arduino读入我构建的Java程序。我想对数据做的是图形,并可能同时将其存储在CSV中。绘图和存储不应该太难。我担心的是做得足够快,不会丢失任何传入的数据。因此,我这里的问题主要是设计问题

我目前的想法是:我有一个主要的事件监听器,它接收所有传入的串行数据并将其放入队列中。我有一个线程,我们称之为线程,在另一端等待数据。在将数据保存到文件之前,该线程将立即将数据发送到另一个线程B。线程B担心数据的图形化

但我很好奇,当线程A从队列中提取数据时,试图从事件侦听器进入的所有数据会发生什么情况?我应该有另一个队列,以防第一个队列很忙,只是来回交换吗

另外,您对使用哪种队列有什么想法?在此领域有经验的人如有任何意见,将不胜感激

附加信息:我正在使用Linux Ubuntu,但希望该程序独立于平台。我正在使用JSSC库读取串行数据

您可以使用Java的并发队列,因为它们是线程安全的。例如,ConcurrentLinkedQueue或ConcurrentLinkedQueue。如果不使用并发队列,当您尝试使用多个线程访问队列时,它将抛出ConcurrentModificationException

通过限制通过串行端口发送数据的数量/频率,可以解决发送数据的速度问题。尽管这可能不是问题