如何调试Java FX中的并发问题?

时间:2018-10-22 08:37:11

标签: java javafx concurrency

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

0 个答案:

没有答案