我可以从线程内部分配类变量吗?

时间:2015-03-04 12:11:53

标签: java android multithreading

我显然不明白这一点,所以有人能告诉我为什么我的类变量没有分配,以及我能做些什么来使它工作?我有两个类变量,它们是数组列表。

listOfPMDFilesInRootZip listOfXMLFilesInRootZip

我已经减少了大量代码,因此您可以看到重要的内容:

public void parseZip(final Object syncToken) {
    showLoadingAlertDialogue(true);
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            synchronized (syncToken) {
                try {

                      // they're assigned here
                    listOfPMDFilesInRootZip = rootZip.getAllPMDFiles();
                    listOfXMLFilesInRootZip = rootZip.getAllXMLFiles();
                      //  System.out.println(listOfPMDFilesInRootZip.size());
                      //  gives what is expected

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            showLoadingAlertDialogue(false);
                        }
                    });
                } catch (java.io.IOException e) {
                    e.printStackTrace();
                }
            }
        }
    });

当我在线程中并且我System.out.println(listOfPMDFilesInRootZip.size());它给了我预期的数量,但是当我在线程完成后尝试访问它时,我得到一个空指针。那么,有人可以告诉我为什么我的类变量没有分配,以及我可以做些什么来使它工作?

感谢您的帮助。

0 个答案:

没有答案