打印100怎么办?

时间:2011-01-14 13:09:17

标签: java multithreading

我想在下面的程序中打印100作为输出。

我的回答为0。

    class s extends Thread{
    int j=0; 
        public void run() { 
            try{Thread.sleep(5000);} 
            catch(Exception e){} 
            j=100; 
        } 
        public static void main(String args[]) 
        { 
            s t1=new s(); 
            t1.start(); 
            System.out.println(t1.j); 
        } 

}

4 个答案:

答案 0 :(得分:13)

您需要等待Thread完成..我已经为您添加了对join的调用,这将阻止并等待Thread完成,然后再查看价值j

class s extends Thread{
    int j=0; 
    public void run() { 
        try{ Thread.sleep(5000); } catch( Exception e ){} 
        j = 100; 
    } 

    public static void main(String args[]) throws InterruptedException { 
        s t1=new s(); 
        t1.start(); 
        t1.join() ; // Wait for t1 to finish
        System.out.println(t1.j); 
    } 
}

答案 1 :(得分:5)

您已将t1加入main。 因此,父thread(main())将等到子线程完成。

答案 2 :(得分:2)

加入t1

t1.join

以便主线程等待

答案 3 :(得分:2)

将线程t1加入主

t1.join