Javafx按钮没有';第一次调用后没有响应(我在任务线程中调用methode)

Javafx按钮没有';第一次调用后没有响应(我在任务线程中调用methode),java,multithreading,user-interface,javafx,Java,Multithreading,User Interface,Javafx,我已经初始化了parseBtn onAction,但是因为parseBtn函数中的工作时间将超过一分钟,所以我创建了Task以在新线程(Task)中执行该工作。start()函数将在后台工作,但在完成parseBtn后不再响应 我想是因为另一个线程中的工作按钮没有通知工作已完成 @FXML私有按钮parseBtn; 公共无效初始化(){ setOnAction(新的EventHandler(){ @凌驾 公共无效句柄(ActionEvent事件){ 新线程(任务).start(); } });

我已经初始化了parseBtn onAction,但是因为parseBtn函数中的工作时间将超过一分钟,所以我创建了Task以在新线程(Task)中执行该工作。start()函数将在后台工作,但在完成parseBtn后不再响应

我想是因为另一个线程中的工作按钮没有通知工作已完成

@FXML私有按钮parseBtn;
公共无效初始化(){
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
新线程(任务).start();
}
});
}
任务=新任务(){
@凌驾
public Void call()引发异常{
//做点什么
返回null;
}
};

任务内部的流程已完成,但按钮不再响应

我找到了解决方案我的错误是任务不能多次调用

    class parser extends Thread{

        @Override
        public void run() {
                //work to do
        }
    }

   public void initialize(){
        parseBtn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                parser p = new parser();
                p.start();
            }
        });
    }

类解析器扩展线程{
@凌驾
公开募捐{
//要做的工作
}
}
公共无效初始化(){
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
parser p=newparser();
p、 start();
}
});
}

这段简短的代码不会导致应用程序挂起。请编辑您的问题,并包括一个演示问题的示例。
任务
不允许多次运行。它当然不打算同时从多个线程运行。(这将导致
状态
属性出现问题。)可用于实现此类功能。但是,正如您在javadoc中的示例中所看到的,有一种方法用于创建
任务的新实例
…谢谢您的评论。。您是对的,我通过创建新的类扩展线程更改了代码,然后从类实例调用start,如回答中所示,似乎您正在使用扩展
线程的
控制器
。我猜这是一个糟糕的编码想法。我还没有足够的知识来确定,但这似乎并不正确。@Sedrick实际上控制器并没有在控制器内部扩展控制器,我已经创建了一个扩展线程的新类。。你认为我怎样才能完成这项任务?