如某些人所述,尝试使用interrupt()来查看它是否对您的线程有任何影响。如果不是,请尝试破坏或关闭将使线程停止的资源。这比尝试抛出Thread.stop()更好。
如果性能是可以忍受的,则可以将每个3D更新视为离散的不间断事件,并让其运行到结论,然后检查是否有新的最新更新要执行。这可能会使GUI变得有些混乱,因为用户将能够进行五处更改,然后查看五处更改之前的图形结果,然后查看其最新更改的结果。但是,根据此过程的时间长短,它可能是可以容忍的,并且可以避免不得不杀死线程。设计可能如下所示:
boolean stopFlag = false;Object[] latestArgs = null;public void run() { while (!stopFlag) { if (latestArgs != null) { Object[] args = latestArgs; latestArgs = null; perform3dUpdate(args); } else { Thread.sleep(500); } }}public void endThread() { stopFlag = true;}public void updateSettings(Object[] args) { latestArgs = args;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)