Я программирую свое первое приложение с параллелизмом, и у меня есть ошибка, которую я не могу понять.Предполагается, что программа читает буфер и, если есть сообщение, что-то печатает в консоли, созданной с помощью TextArea.Проблема в том, что он печатает сообщение в консоли дважды.
У меня есть подсказка, что проблема заключается в параллельности, так как у меня та же программа без нее, и она работает нормально.Ошибка в сообщении, которое я пометил ** Это сообщение *.
public void ReadTask()
{
Runnable task=() -> {
runReadTask();
};
Thread backgroundThread =new Thread(task);
backgroundThread.setDaemon(true);
backgroundThread.start();
}
public void runReadTask()
{
int contador=0;
while(true)
{
if(ComprobarBuffer(msg,can)==true)
{
contador=contador+1;
final String cont="Mensaje " +contador;
Platform.runLater(() -> {
consola.appendText(cont+" Se ha leido un mensaje\n"); //**This message**
});
}
}
}
public static boolean ComprobarBuffer(TPCANMsg msg,PCANBasic can)
{
boolean lectura;
if (can.Read(TPCANHandle.PCAN_USBBUS1, msg,null)==TPCANStatus.PCAN_ERROR_OK)
{
lectura=true;
} else {
lectura=false;
}
return lectura;
}