返回Map的JavaFX Task需要太多时间

时间:2016-03-10 15:49:53

标签: java javafx concurrency

我有JFX Task,它从服务器接收HashMap。此操作大约需要5秒钟,然后我返回此Map以获取OnSucceeded EventHandler中的数据,这需要大约一分钟,直到应用程序进入OnSucceeded EventHandler。

任何人都知道为什么在返回值到达Eventhandler之前需要这么长时间?

其他我试图返回null,但它仍然需要这么长时间。但是,如果我在业务线中发表评论,那么任务正常运行。

 Task<HashMap<Long, PCSortArticle>> taskO = new Task<HashMap<Long, PCSortArticle>>() {
        @Override
        protected HashMap<Long, PCSortArticle> call() throws Exception {
              log.debug("start task loading article");
              log.debug("requesting articles from server");
              HashMap<Long, PCSortArticle> articles = business.getArticlesForCatalogLevel(treeKeyHolder.getSelectedTreeKey(true));
              log.debug("got articles from server");
              return articles;

        }
    };
    taskO.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
        @Override
        public void handle(WorkerStateEvent event) {
            log.debug("start building tableview articles");
        }
    });
    new Thread(taskO).start();

编辑: 我添加了一些日志

2016-03-10 17:05:42,835 DEBUGstart任务加载文章

2016-03-10 17:05:42,836 DEBUG从服务器请求文章

2016-03-10 17:05:44,877 DEBUG从服务器获取文章

2016-03-10 17:06:39,179 DEBUG开始构建tableview文章

0 个答案:

没有答案