对于一个实例,我必须创建基本的处理器模块,并允许它们相互交换双精度值。这些模块将具有公共功能step()
,该公共功能通过一条指令来推进其程序的执行。这些模块保存在HashMap中,主程序对其进行迭代,以确保每个(活动)模块每个周期可以执行一条指令。
我计划处理模块间通信的方法是在每个模块内部创建输入/输出数据字段,这些字段由主程序链接到所有其他模块,充当模块之间的管道。因此,当处理器模块设置输出数据字段时,将通知主程序,该程序将找到与输出字段链接的模块,并将值写入接收模块的相应输入数据字段中,并从发送中清除输出字段模块。
如果模块要从尚未设置的输入字段中读取(== Double.NaN
),或者模块要写入仍包含值的输出字段(!= Double.NaN
),主程序也会收到通知,并使有问题的模块进入休眠状态,直到设置/重置阻止该模块的数据字段为止。
我的问题是,这是处理进程间通信的一种合理方法,还是应该更改某些内容?如果是这样,我该如何以一种允许其使模块进入睡眠状态并稍后恢复的方式通知主程序?