JMM和与外部设备和原子变量的多线程通信

时间:2015-02-27 22:56:01

标签: java multithreading atomicity

我在一个线程中运行一段代码(以下称为“第一个线程”),如下所示:

myAtomicBoolean.set(true);
writeToSerial("foo");

还有第二个线程在循环中执行以下操作:

readSerialBlocking();
if(myAtomicBoolean.get()) {
    // do stuff
}

有一个外部硬件设置,当第一个线程写入其串行端口时,它会间接导致数据被发送到第二个线程使用的串行端口。因为这些是独立的串行端口,所以两个线程不共享锁或监视器。他们唯一的共享信息是AtomicBoolean。

根据我的理解,AtomicBoolean only touch an internal volatile variable的基本getset

我很清楚,外部硬件,操作系统等的延迟将允许变量集传播的速度快于串口可用于读取的速度,但两个线程之间没有任何同步严格保证这种行为。

我的graph-theory-fu不足以理解有关线程要求的part of the JLS

在这种情况下程序是否未正确同步,或者保证volatile写入是否会立即传播到其他线程(特别是在调用writeToSerial之前?

0 个答案:

没有答案