A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

求大神给出更好的方法,结束线程!!!!~

import java.util.Scanner;

public class T04 {

        //停止一个线程不能用stop这种方法
        public static void main(String[] args) {
               
                /*
                MyThread04 t = new MyThread04();
                t.start();
               
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
               
                if(str.equals("1") )
                {
                        t.stop();
                }
                */
               
                MyThread0401 t1 = new MyThread0401();
                t1.start();
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
                if(str.equals("1") )
                {
                        t1.setStop(false);
                }
        }

}

//第一种方式,不安全,可能会报异常
class MyThread04 extends Thread
{
        @Override
        public void run() {
                for( int i = 0 ; i >=0 ;i++ )
                {
                        /*
                        if( i == 50)
                        {
                                Thread.currentThread().stop();
                        }
                        */
                       
                        try {
                                Thread.sleep(1000);
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                       
                        System.out.println(
                                        "MyThread04" + "...."
                                        + i + "播歌..." );
                }
        }
}

//正确的结束方式
class MyThread0401 extends Thread
{
        private int i = 0 ;
        private boolean isStop = true;
       
       
        public void setStop(boolean isStop)
        {
                this.isStop = isStop;
        }
       
        @Override
        public void run() {
                while( isStop )
                {
                        i++;
                       
                        try {
                                Thread.sleep(1000);
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                       
                        System.out.println(
                                        "MyThread0401" + "...."
                                        + i + "播歌..." );
                }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马