我知道,过去曾经问过很多类似的问题,但是它们不符合我的问题而且我不知道如何解决它。
我的javafx应用程序创建了一个computeThread,它将运行一个给定的算法(在本例中是一个带有work()方法的实现接口),所以我不知道在work方法中实际发生了什么。
如果线程被中断,检查每次循环运行的常用方法在这里不起作用。
public void executeAlgorithm(Space2DAlgorithm algorithm)
{
mainComputingTask = new Task<Void>()
{
@Override
protected Void call()
throws Exception
{
try
{
algorithm.work(new Vector<GeometricShape>(currentItems.keySet()));
}
catch ( RuntimeException e )
{
e.printStackTrace();
}
return null;
}
};
}
t = new Thread(mainComputingTask);
t.setUncaughtExceptionHandler(new UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
e.printStackTrace();
System.out.println("UNCAUGHt");
}
});
t.setDaemon(true);
t.start();
我缩短了方法的代码,以便只显示相关部分。我希望我的问题现在得到解决。
我已经尝试了不同的方法来运行mainComputingTask
,上面代码段中的那个方法对我来说是最好的。
以某种方式可以以编程方式停止Thread t
或Task maincomputingTask
吗?
提前多多感谢
编辑:我在Task
处使用了Thread
,以处理onSucceeded
等事件