我今天已经发布了一个问题。这个问题是关于同一个项目,但没有关系。我正在开发乐高NXT Mindstorm机器人的应用程序。我有两台机器人和一台运行在PC上的GUI。需要帮助和想法解决收集问题
在leJOS NXJ中,您只能使用一个输入阅读器。这意味着您无法直接将PC连接到两个机器人,并让两个机器人直接相互连接。所以这就是我所做的。我直接将PC连接到两台机器人上,当两台机器人想直接通信时,我通过GUI发送他们的消息。
有一大堆GUI和机器人之间以及机器人自身之间的通信。因为这个原因,任何时候我写数据到输出流,似乎有些数据被其他人覆盖,系统工作不正常。
我一直在建议编写一个类,该类将包含一个集合(Queue)对象,以便随时机器人要发送一些东西时,它将它添加到集合(Queue)中,并从该类中持有集合对象,会有一种方法,以便它不断地检查集合,只要它不是空的,它就会将集合中的数据发送到输出流。
这意味着每当集合中的数据被发送到输出流,有可能是被添加了新的数据。
有人建议我使用ArrayBlockQueue和等..但这些类不是该机器人使用class.jar文件中。
我在这个jar文件中知道的集合类是Vectors和Queue。
我在问,如果有人能帮助我,让我知道如何实现这样的课程。该类中的方法将不时检查集合中是否有数据,并将通过输出流发送它们。在发送时,可能会添加新的元素。
由于数据是从一个地方发送的,因此没有数据会覆盖另一个地方。这听起来对我来说是个好主意。
欢迎您提出建议。
谢谢。
我会建议组合而不是继承,这是长期的安全。你想确保你的类的_all_公共方法是同步的,但是如果将来超类接口被扩展,那么这个保证就会被破坏。 – 2010-07-28 20:08:46
好点。我认为子类化是Java的阻塞集合所做的,因为它们有一个稍微不同的接口,但仔细观察,我发现它们必须使用组合(或类似)。 – Scott 2010-07-28 21:51:48
感谢您的回复球员 – kap 2010-07-28 23:43:21