在JavafX服务中运行线程

时间:2015-07-14 23:00:03

标签: multithreading service javafx

我对如何继续编写程序感到困惑。

基本上,它连接到多个串行设备,然后根据设备的响应更新javafX应用程序(我首先要向机器发送消息)。所以我所做的是创建一个在服务线程中运行的线程,这样我的程序就不会冻结,线程可以暂停直到消息被读取(在通过串行设备发送和接收消息之间有延迟) 。

service = new Service() {
        @Override
        protected Task<String> createTask() {
            return new Task<String>(){
                @Override
                protected String call() throws Exception {
                    new Thread(thread).start();
                    return null;
                }
            };
        }
     };

线程执行某些循环,不断发送和读取消息。

@Override
public synchronized void run() {
    while(serialOn && isRunning){
        sendMessages();
    }
}

public synchronized void sendMessages(){
  sendSerial1();
  this.wait();
  sendSerial2();
  this.wait();
}

public synchronized void readMessage1(){ // same readMessage2 for the sendSerial2()
  getMessage(); // updates variables that are bound to the Javafx App
  this.notify();
}

但是,我认为服务在事件启动我的串行线程之前完成(即成功或失败)。但我希望服务在程序发送和接收消息时继续运行。

如果您需要更多代码,请告诉我,它有点长并需要串行设备运行,但如果它让问题更容易理解,我可以将其包含在此处。

0 个答案:

没有答案