我正在使用并发编程我的第一个应用程序,但有一个我无法理解的错误。该程序应该读取缓冲区,如果有消息,请在使用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;
}