java多线程快速入门(十九)

如何停止线程

  1、使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了)

package com.cppdy;

class MyThread15 extends Thread{

    @Override
public synchronized void run() {
while(true) {
try {
wait();
} catch (Exception e) { }
//如果这里有非常重要的代码块,是不是就出现问题了
System.out.println("Thread run------");
}
} } public class ThreadDemo15 { public static void main(String[] args) throws Exception {
MyThread15 mt = new MyThread15();
Thread thread1 = new Thread(mt);
Thread thread2 = new Thread(mt);
thread1.start();
thread2.start();
int count=0;
while(true) {
System.out.println("Main run------");
Thread.sleep(100);
if(count==30) {
thread1.stop();
thread2.stop();
break;
}
count++;
}
} }

  2、使用interrupt方法中断线程(将业务操作执行完后再中断线程)

package com.cppdy;

class MyThread15 extends Thread{

    @Override
public synchronized void run() {
while(true) {
try {
wait();
} catch (Exception e) { }
//如果这里有非常重要的代码块,是不是就出现问题了
System.out.println("Thread run------");
}
} } public class ThreadDemo15 { public static void main(String[] args) throws Exception {
MyThread15 mt = new MyThread15();
Thread thread1 = new Thread(mt);
Thread thread2 = new Thread(mt);
thread1.start();
thread2.start();
int count=0;
while(true) {
System.out.println("Main run------");
Thread.sleep(100);
if(count==30) {
thread1.interrupt();
thread2.interrupt();
break;
}
count++;
}
} }

  3、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止

package com.cppdy;

class MyThread15 extends Thread{

    public volatile boolean flag=true;

    @Override
public synchronized void run() {
while(flag) {
try { } catch (Exception e) {
setFlag(flag);
}
System.out.println("Thread run------");
}
} public void setFlag(boolean flag) {
this.flag=flag;
} } public class ThreadDemo15 { public static void main(String[] args) throws Exception {
MyThread15 mt = new MyThread15();
Thread thread1 = new Thread(mt);
Thread thread2 = new Thread(mt);
thread1.start();
thread2.start();
int count=0;
while(true) {
System.out.println("Main run------");
Thread.sleep(100);
if(count==30) {
mt.setFlag(false);
break;
}
count++;
}
} }
上一篇:ACM 继续畅通工程


下一篇:Microsoft Visual Studio 遇到了问题需要关闭