求大神给出更好的方法,结束线程!!!!~
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 + "播歌..." );
}
}
}
|
|