我编写了一个需要从服务器接收信息的程序。我使用异步线程来实现这一点。但是,当用户单击另一个项目时,就会启动一个新线程。如果第一个线程尚未完成(例如由于网络问题),则第二个线程将结束并设置 UI 信息。然后第一个结束并再次覆盖它。那么,当用户单击另一个项目时,如何停止第一个线程呢?
我明白了:
Thread asyncThread = new Thread(task);
asyncThread.start();
但是从我在 Thread 对象中看到的情况来看,没有办法停止线程(只能弃用 .stop()),但我不想在新程序中使用已弃用的东西。
最佳答案
在JavaFX中建议使用Service,服务提供诸如stop()、cancel()、restart()之类的方法...看看我对此的回答JavaFX GUI stuck展示如何使用服务。
关于JavaFX 停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255558/