У меня возникли проблемы с работой ScheduledExecutorService.
Это метод, который я вызываю, который работает , если я вызываю его без планирования.
Однако, если я вызываю его через ScheduledExecutorService, мой экран не обновляется, он также запускается только один раз, поэтому я предполагаю, что генерируется исключение, но я не вижу исключения ни на сервере, ни на клиенте.
private void getNextRoundFromServer() throws IOException{
try{
if(!this.connected) return;
this.dos.writeByte(2);
this.dos.flush(); // Send data
this.grid = (Grid) this.ois.readObject(); //i have checked, i do recieve this object
setMainPane(render.render(this.grid)); //this renders the view
} catch(ClassNotFoundException ex){
ex.printStackTrace();
}
}
Вот как я делаю свою реализацию.
continuousPlayButton.setOnMouseClicked(e -> {
try{
Runnable scheduledRound = () -> {
try {
getNextRoundFromServer();
} catch (IOException ex) {
ex.printStackTrace();
}
};
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(scheduledRound, 1, 5, TimeUnit.SECONDS);
}catch(Exception ex){
ex.printStackTrace();
}
});
Почему мой вид не обновляется?
Обновление
Решение:
Как упомянуто пользователем tjanu
: я забыл позвонить Platform.runLater
по запланированному заданию. Что я уже сделал, когда позвонил без планирования ... 10