如何从java线程中获取变量值

时间:2017-07-25 14:03:52

标签: java swing swingworker

我有一个计算某些东西的线程并生成一个2 d数组。线程完成后,我需要访问这个2 d数组的值。我怎么能这样做

        SwingWorker<Integer, Void> worker = new SwingWorker<Integer, Void>()
        {
            Object[][] valueMatrix = null;

            @Override
            public Integer doInBackground()
            {
                try
                {
                    valueMatrix = doChemicalSynonyms(termsArray_1, termsArray_2, mView.getSaveFilepath(), false, mView.getSheetName(), mView.getCategoryName(), mView.includePMIDs());
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                    return -1;
                }
                return 0;
            }

            @Override
            public void done()
            {
                System.out.println(valueMatrix[0][0]);
            }
        };
        worker.execute();

doChemicalSynonyms函数生成valueMatrix。一旦线程完成,我如何从主类(类似全局变量)

访问它

1 个答案:

答案 0 :(得分:-1)

你应该做的是使用done()方法从线程中收集任何结果。基本上你现在打印第一个值,你可以将它转移到另一个线程以在那里使用它。

请注意在EDT中调用done(),因此如果您需要对其进行密集操作,则需要另一个线程。