从GUI取消computingThread

时间:2015-06-12 14:01:43

标签: java javafx

我知道,过去曾经问过很多类似的问题,但是它们不符合我的问题而且我不知道如何解决它。

我的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 tTask maincomputingTask吗?

提前多多感谢

编辑:我在Task处使用了Thread,以处理onSucceeded等事件

0 个答案:

没有答案