在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() {
while (!stop && counter < 10000) {
//System.out.println(counter++);
}
if (stop){
System.out.println("Detected stop");
}
} public void requestStop() {
stop = true;
}
} public class StoppingThread {
public static void main(String[] args) {
final CanStop stoppable = new CanStop();
stoppable.start(); new Timer(true).schedule(new TimerTask() {
public void run() {
System.out.println("Requesting stop");
stoppable.requestStop();
}
}, 350);
}
}
Java

上述代码示例将产生以下结果 -

Requesting stop
Detected stop

Java如何停止线程?的更多相关文章

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

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

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

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

  3. Java安全停止线程方法

    1. 早期Java提供java.lang.Thread类型包含了一些列的方法 start(), stop(), stop(Throwable) and suspend(), destroy() and ...

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

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

  5. java安全停止线程

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

  6. java线程之停止线程

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

  7. JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止

    JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...

  8. java中线程的几种状态和停止线程的方法

    1.线程的状态图 需要注意的是:线程调用start方法是使得线程到达就绪状态而不是运行状态 2.停止线程的两种方法 1)自然停止:线程体自然执行完毕 2)外部干涉:通过线程体标识 1.线程类中定义线程 ...

  9. java以正确的方式停止线程

    java线程停止可以说是非常有讲究的,看起来非常简单,但是也要做好一些防范措施,一般停止一个线程可以使用Thread.stop();来实现,但是最好不要用,因为他是不安全的. 大多数停止线程使用Thr ...

随机推荐

  1. ubantu 单用户模式进入系统

    提到如何在gurb界面进入单用户模式,此模式下,用户不需要输入任何密码即可进入系统.于是查了一下ubuntu如何通过grub界面以单用户模式进入系统.实验步骤如下: 1.重启系统 按住shift键 进 ...

  2. linux命令(46):批量更改文件后缀,文件名

    linux shell 1.要将所有 jpeg的后缀名图片文件修改为 jpg文件. rename .jpeg .jpg *.jpeg

  3. Java多线程中的Runnable和Thread

    摘要: 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的r ...

  4. Creating a Physical Standby Database 11g

    1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...

  5. for语句查看js对象

    for (var obj in o.curform) { document.write("<p>" + obj + " = " + o.curfor ...

  6. MySQL5.7 添加用户、删除用户与授权

    mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...

  7. Mac OS X下的移动光标和文字编辑快捷键

    移动光标快捷键 Control-F 光标前进一个字符,相当于右键(F = Forward) Control-B 光标后退一个字符,相当于左键(B = Backward) Control-P 上移一行, ...

  8. [iptables]iptables常规设置

    转自:http://leil.plmeizi.com/archives/centos-iptables%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95%E8%BD%AC/ 关闭 ...

  9. Vagrant (2) —— 基本安装与配置(下)

    Vagrant (2) -- 基本安装与配置(下) 摘要 基本安装与配置 版本 Vagrant版本: 1.8.1 内容 预置 我们可以通SSH登录然后安装一个web服务器,但是这样每个使用Vagran ...

  10. WinDbg F9时“code not found breakpoint not set”

    当使用Windbg 6.2.9200.16384 进行源码调试时,无法在代码文件中F9设置断点,会出现“code not found breakpoint not set”,我们只有启动下我们自己的驱 ...