首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Runnable类对象

Runnable类对象
EN

Stack Overflow用户
提问于 2017-12-17 07:35:58
回答 1查看 66关注 0票数 1

我对Java中的线程没有太多的经验。如何从Runnable(){}内部获取字符串ft的值,以便在main()中使用它。

代码语言:javascript
复制
public class testInner {
    public static void main (String[] args){
        Outer out =new Outer();
        out.makeinner();
        System.out.println("main :" + out.getft());
    }
}
public class Outer {
    private volatile String ft;
    public String getft(){
        return ft;
    }
    public void makeinner(){
        inner in = new inner();
        in.changeOuter();
    }
    public class inner{
        public void changeOuter(){
            new Thread(new Runnable(){
                public void run(){
                    ft = "what?";
                    System.out.println("run :" + ft);
                }
            }).start();
        }
    }
}

编译时的结果:

代码语言:javascript
复制
main :null
run :what?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-17 07:38:59

线程是并行执行的,因此在执行System.out.println("main :" + out.getft());时,您不能确保线程已成功执行。这就是你得到null的原因,线程还没有编辑这个变量。

如果要确保线程完成执行,请使用join

代码语言:javascript
复制
public class inner{
    public void changeOuter(){
        Thread myThread = new Thread(new Runnable(){
            public void run(){
                ft = "what?";
                System.out.println("run :" + ft);
            }
        });
        myThread.start();
        myThread.join(); // wait for the thread to finish before returning

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

https://stackoverflow.com/questions/47850943

复制
相关文章

相似问题

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