主线程执行到i=5的时候      子线程还没启动,所以就没打印了。
要打印的话,每次i++的时候都给它wait一下就可以了

解决方案 »

  1.   

    用vim 秒删行号
    linux?
      

  2.   

    用vim 秒删行号
    linux?public class ThreadLift
    {
        public static void main(String[] args)
        {
            ThreadTest t=new ThreadTest();
            new Thread(t).start();
            for(int i=0;i<10;i++)
            {
                if(i==5)
                    t.stopMe();
                System.out.println("main");
            }
        }
    }class ThreadTest implements Runnable
    {
        private boolean bFull=true;    public void stopMe()
        {
            bFull=false;
        }
        public void run()
        {
            
            while(bFull)
            {
                System.out.println(Thread.currentThread().getName() + "cccc");
            }
        }
    }
      

  3.   

    main
    main
    main
    main
    main
    main
    main
    main
    main
    main
    Thread-0cccc你想怎样
      

  4.   

    public class ThreadLift
    {
        public static void main(String[] args)
        {
            ThreadTest t=new ThreadTest();
            new Thread(t).start();
            for(int i=0;i<10;i++)
            {
             try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
                if(i==5)
                    t.stopMe();
                System.out.println("main");
            }
        }
    }class ThreadTest implements Runnable
    {
        private boolean bFull=true;    public void stopMe()
        {
            bFull=false;
        }
        public void run()
        {
            
            while(bFull)
            {
                System.out.println(Thread.currentThread().getName() + "cccc");
            }
        }
    }
    Thread-0cccc
    Thread-0cccc
    Thread-0cccc
    Thread-0cccc
    Thread-0cccc
    Thread-0cccc
    Thread-0cccc
    main
    main
    main
    main
    main不是不打印的。你的这个程序,有两个线程,一个主线程,一个子线程。当你启动子线程的时候,还没有获得系统分配资源,意思就是这个子线程是一个可运行状态。而主线程已经一直往下执行,当主线程在for循环中,可能执行了许久,子线程才运行。所以你可以用sleep(10)来给主线程睡眠一下,你就可以看到其实子线程也在跑,不要让子线程一下跑到了i==5的时候,子线程还没有运行。总结一下。子线程start(),不代表马上运行,只能说它是一个可运行状态,这个时候,这个线程会交给系统自己调度。  希望能对你有帮助。