Java,启动线程后获取空值

标签 java android multithreading

我正在尝试在我的 Android 应用程序中的非 GUI 相关类中运行此代码。

Thread connection = new Thread(new Runnable() {
                public void run() {
                    try {
                        streamSource = new StreamSource(conn.getInputStream());
                        writer = new CharArrayWriter();
                        StreamResult streamResult = new StreamResult(writer);
                        TransformerFactory factory = TransformerFactory.newInstance();
                        Transformer transformer = factory.newTransformer();
                        transformer.transform(streamSource, streamResult);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
              });
        connection.start();

问题是,当我调用 writer 时,我得到一个空值。 Writer 和streamSource 一样被定义为静态全局变量。 我不擅长线程,这似乎是我的主线程没有看到我的编写器已创建。

有什么帮助吗?

最佳答案

您的变量Writer位于另一个类(线程)中,因此您无权访问它。 它是静态的,这就是理论上能够访问它的原因,但它没有初始化到其他线程。

请在您需要的地方创建变量 - 或“外包”那里发生的完整操作。

编辑:http://developer.android.com/guide/components/processes-and-threads.html 以下是有关 Android 中线程和进程的一些信息。

关于Java,启动线程后获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500743/

相关文章:

java - Java中 "<object>"运算符的含义

c++ - std::map operator[] 中的违规读取位置

c# - SqlConnection 线程安全吗?

android - 偏好选择始终保持默认

java - quartz 表适用于不规则的小时间隔

java - 防止线程子类等待

java - 如何从 Java 中的 XML 字符串中获取所有元素的值?

java - Maven 的 repo 包中缺少文件

java - JPA (Hibernate) : "ORA-02289 Sequence does not exist", 但确实如此

java - Opengl es on android problem with object opsition on projection matrix