1.你用错了。
2.t1.join()表示当前线程要等待t1运行结束后才能继续执行。
3.叫一个线程停下的最好办法,也是sun的推荐办法,就是内部设定退出标记。

解决方案 »

  1.   

    join用法举例:
    public class TestJoin
    {
        Thread a, b;
        class A extends Thread
        {
            public void run()
            {
                for(int i=0;i<1000;i++)
                {
                    System.out.println("A");
                    Thread.currentThread().yield();
                }
            }
        }
        class B extends Thread
        {
            public void run()
            {
                System.out.println("WILL GO!");
                try
                {
                    a.join();
                }catch(Exception ex)
                {
                    ex.printStackTrace();
                }
                for(int i=0;i<1000;i++)
                {
                    System.out.println("B");
                    Thread.currentThread().yield();
                }
            }
        }
        public void test()
        {
            try
            {
                a = new A();
                b = new B();
                b.start();
                a.start();        }catch(Exception ex)
            {
                ex.printStackTrace();
            }    }
        public static void main(String[] args)
        {
            new TestJoin().test();
        }}
      

  2.   

    上面的例子中,虽然线程b比a先启动,但b内有a.join(),因此,b会停下等待a执行完,再执行。
    输出结果如下:
    WILL GO!
    A
    A
    ..
    ..
    A
    B
    B
    ...
    B
      

  3.   

    你那样无法停,如果你真想在线程中通知线程1中某时刻停,你可以线程之间建立管道流Poipe....
      

  4.   

    feiyuegaoshan(飞跃)  is  a good guy!
      

  5.   

    feiyuegaoshan(飞跃)大哥说得相当详细了,插不上话了:)
      

  6.   

    就错在你用join
    无限等待死亡??
      

  7.   

    http://expert.csdn.net/Expert/topic/2077/2077183.xml?temp=.6055414