小编Hen*_*rik的帖子

为什么一个对象有时为null,当它在一个线程中被初始化并从main访问时?

当我在一个线程中创建一个新对象时,它是一个对象的属性我给予该线程它在main-function中保持为null(但是没有System.out).我写了一个简单的问题示例,结果相同:

public class T1 {
    public T2 t2;
}
public class T2 {
    public String s;
    /**
     * @param args
     */
    public static void main(String[] args) {
        T1 t1 = new T1();

        T3 thread = new T3(t1);
        thread.start();

        while(t1.t2 == null){
    //      System.out.println("null");
        }
        System.exit(0);
    }
}

public class T3 extends Thread{
    public T1 t1;

    public T3(T1 t1){
        this.t1 = t1;
    }

    @Override
    public void run(){
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t1.t2 = new T2(); …
Run Code Online (Sandbox Code Playgroud)

java null multithreading object

3
推荐指数
1
解决办法
1058
查看次数

标签 统计

java ×1

multithreading ×1

null ×1

object ×1