Java串行通信和多线程

时间:2015-03-14 16:53:34

标签: java multithreading serial-port blockingqueue

我正在阅读从Arduino到我已经构建的Java程序的数据。我想对数据做的是图形并同时存储它(可能是CSV格式)。图形和存储不应该太难。我担心的是它做得足够快,以至于我不会丢失任何传入的数据。因此,我的问题主要是设计问题。

我当前的思考过程:我在main()中有一个事件监听器,它接收所有传入的串行数据并将其放入队列中。我有一个线程(让它称之为线程A)在另一端等待数据。在将数据保存到文件之前,线程将立即将数据发送到另一个线程(B)。线程B担心图形化数据。

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

另外,有关使用什么类型的队列的任何想法?任何来自此领域经验丰富的人的意见表示赞赏。

其他信息:我正在使用Linux(Ubuntu),但希望该程序与平台无关。我正在使用JSSC库来读取串行数据。

1 个答案:

答案 0 :(得分:0)

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

  2. 可以通过限制通过串行端口发送的数量/频率来解决有关发送数据的速度的问题。虽然这可能不是问题。