首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java,在启动线程后获得空值。

Java,在启动线程后获得空值。
EN

Stack Overflow用户
提问于 2013-01-24 11:52:06
回答 2查看 392关注 0票数 0

我试图在我的android应用程序中,在一个与GUI无关的类中运行这段代码。

代码语言:javascript
复制
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();

问题是,当我打电话给作者时,我得到了一个空值。编写器定义为静态全局变量以及streamSource。我不擅长线程,这似乎是我的主线程没有看到我的作者是被创建的。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2013-01-24 11:57:25

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

请在需要它的地方创建变量--或者“外包”发生在那里的全部操作。

编辑http://developer.android.com/guide/components/processes-and-threads.html是关于安卓系统中线程和进程的一些信息。

票数 1
EN

Stack Overflow用户

发布于 2013-01-24 12:01:11

初始化写入器对象后启动线程。如果需要同时运行两个线程,那么简单的方法是运行一个while循环,检查每次迭代时是否使用writer != nullThread.sleep

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14500743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档