1. 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. 2.使用volatile变量来设置Thread的run的循环条件,保证变量同步性
    3. public class JavaTest extends Thread{
    4. private volatile boolean isRun = true;
    5. public static void main(String[] args) {
    6. JavaTest thread = new JavaTest();
    7. thread.start();
    8. thread.close();
    9. }
    10. @Override
    11. public void run() {
    12. while (isRun) {
    13. //dosomething
    14. }
    15. }
    16. public void close() {
    17. this.isRun = false;
    18. }
    19. }
    20. 3.使用interrupt()来中止非运行状态的线程,如wait()和sleep()状态的线程,此时可利用interrupted来终止线程
    21. public class JavaTest extends Thread{
    22. private volatile boolean isRun = true;
    23. public static void main(String[] args) {
    24. JavaTest thread = new JavaTest();
    25. thread.start();
    26. thread.close();
    27. if (thread != null) {
    28. thread.interrupt(); //外围调用关闭
    29. }
    30. }
    31. @Override
    32. public void run() {
    33. while (isRun) {
    34. //dosomething
    35. try {
    36. wait();   //同样适用于sleep等状态
    37. } catch (InterruptedException e) {
    38. //catch Exception
    39. }
    40. }
    41. }
    42. public void close() {
    43. this.isRun = false;
    44. }
    45. }

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

  1. 转: Java安全停止线程方法

    转: http://blog.csdn.net/flyingpig4/article/details/7675557 1.早期Java提供java.lang.Thread类型包含了一些列的方法star ...

  2. Thread之十:停止线程方法汇总

    在上篇文章<多线程的使用——Thread类和Runnable接口>中提到中断线程的问题.在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Dep ...

  3. Java如何停止线程?

    在Java编程中,如何停止线程? 以下示例演示了如何通过创建一个用户定义的方法run()方法和Timer类来停止线程. package com.yiibai; import java.util.Tim ...

  4. 深入理解Java中停止线程

    一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预测,所以必 ...

  5. Java——安全地停止线程

    错误用例 下面用例中,一个正在sleep的线程,在调用interrupt后,wait方法检查到isInterrupted()为true,抛出异常, 而catch到异常后没有处理.一个抛出了Interr ...

  6. java安全停止线程

    Thread.stop()是一个被废弃的方法,不被推荐使用的原因是stop方法太过于暴力,强行把执行到一半的线程终止,并且会立即释放这个线程所有的锁.会破坏了线程中引用对象的一致性. 使用判断标志位的 ...

  7. java线程之停止线程

         在Java中有以下3种方法可以终止一个正在运行的线程:      1.使用退出标志,是线程正常退出,也就是run方法完成后线程终止.      2.使用stop方法强制终止线程,但不推荐使用 ...

  8. Java自学-多线程 常见线程方法

    Java 常见的线程方法 示例 1 : 当前线程暂停 Thread.sleep(1000); 表示当前线程暂停1000毫秒 ,其他线程不受影响 Thread.sleep(1000); 会抛出Inter ...

  9. 正确的停止java中的线程

    stop()方法不是一个正确的停止线程方法. 正确的停止方法:设置退出旗标

随机推荐

  1. 阿里内部分享:我们是如何?深度定制高性能MySQL的

    阿里云资深数据库工程师赵建伟在“云栖大会上海峰会”的分享.核心是阿里云的数据库服务和MySQL分支的深度定制实践分享. 阿里巴巴MySQL在全球都是有名的.不仅是因为其性能,还因为其是全世界少数拥有M ...

  2. asp.net MVC AngularJS

    http://www.cnblogs.com/powertoolsteam/category/834105.html

  3. 001-多线程-JUC线程池-线程池架构-Executor、ExecutorService、ThreadPoolExecutor、Executors

    一.概述 1.1.线程池架构图 1. Executor 它是"执行者"接口,它是来执行任务的.准确的说,Executor提供了execute()接口来执行已提交的 Runnable ...

  4. Queue class

    #pragma once#include <iostream>#include <iomanip> using namespace std; class Queue{ stru ...

  5. LeetCode_13. Roman to Integer

    13. Roman to Integer Easy Roman numerals are represented by seven different symbols: I, V, X, L, C,  ...

  6. Cloudera Manager 概念

    cloudera公司发布的CDH集群,使用Cloudera Manager来管理整个集群,使用过程中主要涉及到几个关键概念:cluster.service.role.host.直接上图,直观理解几个概 ...

  7. onethink多图上传

    模板处理, 可以参考 checkbox 的. 注:edit 方法的 基本一样,需要先把已有的数据展示出来,绑定双击事件,删除图片 需要先绑定给已经展示出来的图片, uploadPicture 的cal ...

  8. 知识点整理-mysql怎么查看优化器优化后的sql

    背景 1.新建两张表 CREATE TABLE t1 (m1 )); CREATE TABLE t2 (m2 )); 2.插入些数据 INSERT INTO t1 VALUES(, , , 'c'); ...

  9. centos7 vim环境优化

    centos7默认是使用vi,而不是使用vim,所以,我们需要修改一下vi的别名,并且,我们使用neovim,vi毕竟还是有很多功能比较原始 所以 yum install neovim -ycat & ...

  10. 【Qt开发】关于QWSServer

    QWS Server QT Embeded应用没有来严格的区分server和client进程,如果一个QT进程的启动参数中有-qws,那么这个进程就具有server管理功能,被称为QWS server ...