Java安全停止线程方法

来源:互联网 发布:centos启动mysql服务 编辑:程序博客网 时间:2024/05/24 05:50

1.早期Java提供java.lang.Thread类型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。,Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》2.使用volatile变量来设置Thread的run的循环条件,保证变量同步性    public class JavaTest extends Thread{private volatile boolean isRun = true;public static void main(String[] args) {JavaTest thread = new JavaTest();thread.start();thread.close();}@Overridepublic void run() {while (isRun) {//dosomething}}public void close() {this.isRun = false;}}3.使用interrupt()来中止非运行状态的线程,如wait()和sleep()状态的线程,此时可利用interrupted来终止线程public class JavaTest extends Thread{private volatile boolean isRun = true;public static void main(String[] args) {JavaTest thread = new JavaTest();thread.start();thread.close();if (thread != null) {thread.interrupt(); //外围调用关闭}}@Overridepublic void run() {while (isRun) {//dosomethingtry {wait();   //同样适用于sleep等状态} catch (InterruptedException e) {//catch Exception}}}public void close() {this.isRun = false;}}


原创粉丝点击