使用javaFX中的任务工作者始终执行后台任务

时间:2015-07-16 14:18:59

标签: java multithreading javafx javafx-2 javafx-8

我在javafx中有一个后台线程,根据某些对象字段更改返回另一个对象,我应该根据这个新对象更新UI。 我总是要重复这个。但遗憾的是它只重复了一次! 我不明白为什么。 我的意思是输出是:" id" (只有一次!)

 Task<Category> n = new Task<Category>() {

        @Override
        protected Category call() throws Exception {
            final int catNum = iterateAllCat.size();


            while (true) {
                 boolean catDone = false;
                System.err.println("id");

                for (int i = catNum - 1; i >= 0; i--) {
                    final Category cat = iterateAllCat.get(i);
                        if (cat.done) {
                            break;
                        }
                        catDone = true;

                    if (catDone) {
                        System.err.println("done");
                        break;
                    }
                }
                return category;
            }
        }

    };
    n.valueProperty().addListener(new ChangeListener<Category>() {
        @Override
        public void changed(ObservableValue<? extends Category> observable, Category oldValue, Category newValue
        ) {
            try {
                board.categoryPane(++num);
            } catch (NullPointerException n) {

            }
        }

    }
    );




    Thread t = new Thread(n);
    t.setDaemon(true);
    t.start();

0 个答案:

没有答案