如何从java线程获取变量值

如何从java线程获取变量值,java,swing,swingworker,Java,Swing,Swingworker,我有一个线程,它计算一些东西并生成一个二维数组。当线程完成时,我需要访问这个2D数组的值。我该怎么做 SwingWorker<Integer, Void> worker = new SwingWorker<Integer, Void>() { Object[][] valueMatrix = null; @Override public Integer doInBac

我有一个线程,它计算一些东西并生成一个二维数组。当线程完成时,我需要访问这个2D数组的值。我该怎么做

        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();
SwingWorker-worker=新的SwingWorker()
{
对象[][]valueMatrix=null;
@凌驾
公共整数doInBackground()
{
尝试
{
valueMatrix=同义词(termsArray_1、termsArray_2、MVView.getSaveFilepath()、false、MVView.getSheetName()、MVView.getCategoryName()、MVView.IncludeMIDS());
}
捕获(例外e)
{
e、 printStackTrace();
返回-1;
}
返回0;
}
@凌驾
公众假期结束()
{
System.out.println(valueMatrix[0][0]);
}
};
worker.execute();

使用同义词函数生成valueMatrix。线程完成后,如何从主类(类似于全局变量)访问它您应该做的是使用
done()
方法从线程收集任何结果。基本上,在您现在打印第一个值的地方,您可以将它传输到另一个线程以在那里使用它


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

取决于工作线程的实现位置。如果它是同一个类,你可以将它变成一个成员变量。有几种方法可以做到这一点。您可以在收到
DONE
属性更改通知后调用
get()。