转: Java安全停止线程方法】的更多相关文章

转: http://blog.csdn.net/flyingpig4/article/details/7675557 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.…
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 Jav…
在上篇文章<多线程的使用——Thread类和Runnable接口>中提到中断线程的问题.在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Deprecated).那么应该怎么结束一个进程呢?官方文档中对此有详细说明:<为何不赞成使用 Thread.stop.Thread.suspend 和 Thread.resume?>.在此引用stop方法的说明: 1. Why is Thread.stop deprecated? Because it…
在Java编程中,如何停止线程? 以下示例演示了如何通过创建一个用户定义的方法run()方法和Timer类来停止线程. package com.yiibai; import java.util.Timer; import java.util.TimerTask; class CanStop extends Thread { private volatile boolean stop = false; private int counter = 0; public void run() { whi…
一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预测,所以必须去做好防备. 二.认识停止线程的几个方法  2.1三个被弃用的方法 stop().suspend().resume(). stop()方法被弃用的原因:无论线程执行到了什么位置,一旦被stop就会被马上强制中断,并且释放线程所有持有锁对象,根本就没有安全性. suspend()和resume()这…
错误用例 下面用例中,一个正在sleep的线程,在调用interrupt后,wait方法检查到isInterrupted()为true,抛出异常, 而catch到异常后没有处理.一个抛出了InterruptedException的线程的在调用interrupt后状态马上就会被置为非中断状态.如果catch语句没有处理异常,则下一 次循环中isInterrupted()为false,线程会继续执行,程序无法正常退出. import lombok.extern.slf4j.Slf4j; @Slf4j…
Thread.stop()是一个被废弃的方法,不被推荐使用的原因是stop方法太过于暴力,强行把执行到一半的线程终止,并且会立即释放这个线程所有的锁.会破坏了线程中引用对象的一致性. 使用判断标志位的方法中断线程 interrupt() //线程中断  (标志位设置为true)isInterrupted() //判断是否被中断interrupted() //判断是否中断,并清除当前中断状态(标志位改为false) public static class TestThread extends Th…
     在Java中有以下3种方法可以终止一个正在运行的线程:      1.使用退出标志,是线程正常退出,也就是run方法完成后线程终止.      2.使用stop方法强制终止线程,但不推荐使用这个方法,因为stop.suspend和resume一样,都是作废过期的方法.      3.使用interrupt方法中断线程,大多数停止一个线程使用Thread.interrupt()方法,但是这个方法不会终止一个正在运行的线程,还需要加入一些判断才可以完成线程的停止. 下面我就用几个例子来介绍…
Java 常见的线程方法 示例 1 : 当前线程暂停 Thread.sleep(1000); 表示当前线程暂停1000毫秒 ,其他线程不受影响 Thread.sleep(1000); 会抛出InterruptedException 中断异常,因为当前线程sleep的时候,有可能被停止,这时就会抛出 InterruptedException package multiplethread; public class TestThread { public static void main(Strin…
stop()方法不是一个正确的停止线程方法. 正确的停止方法:设置退出旗标…