我试图在我的javaFX应用程序的开头启动后台线程,但我的UserInterface(UI)仍然冻结。这就是我在做的事情:
Task task = new Task<Void>() {
@Override protected Void call() throws Exception {
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
Class.forName("org.sqlite.JDBC");
Connection c = DriverManager.getConnection("jdbc:sqlite:visuAgent.db");
c.setAutoCommit(false);
Statement stmtt = c.createStatement();
ResultSet rs = stmtt.executeQuery( "select max(num_step) from avoir_continent " );
rs.close();
stmtt.close();
} catch (ClassNotFoundException ex) {
Logger.getLogger(rafraichirbd.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(rafraichirbd.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
return null;
}
};
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
有什么想法吗?谢谢。
答案 0 :(得分:1)
您在任务Platform.runLater()
中使用call()
。 Platform.runLater()takes you back to the UI thread
。
尝试删除它,同时进行计算并仅在需要更新UI上的某些数据时使用它