文档章节

interrupt ,interrupted,isInterrupted 区别

zheng_pat
 zheng_pat
发布于 2016/06/13 00:15
字数 361
阅读 34
收藏 2

 

 

1、interrupt 
interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。
注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。

2.interrupted 是作用于当前线程,isInterrupted 是作用于调用该方法的线程对象所对应的线程。(线程对象对应的线程不一定是当前运行的线程。例如我们可以在A线程中去调用B线程对象的isInterrupted方法。)
这两个方法最终都会调用同一个方法,只不过参数一个是true,一个是false;
这两个方法很好区分,只有当前线程才能清除自己的中断位(对应interrupted()方法)

 

package com.famous.thread;

public class ThreadStopDemo {

	/**
	 * 
	 * mock thread stop
	 * 
	 * @author zhenglong
	 *
	 */
	public static void main(String[] args) {

		Thread thread = new Thread(new StopThread());
		thread.start();
		try {
			Thread.sleep(100);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		thread.interrupt();
	}

	static class StopThread implements Runnable {

		@Override
		public void run() {
			int i = 0;
			while (true) {
				i++;
				System.err.println(i);
				if (Thread.currentThread().isInterrupted()) {
					// 一直输出true
					System.err.println(Thread.currentThread().isInterrupted());
					// 一直输出true
					System.err.println(Thread.currentThread().isInterrupted());
					// 一直输出true
					System.err.println(Thread.currentThread().interrupted());
					// 一直输出false
					System.err.println(Thread.currentThread().interrupted());
					break;
				}
			}
		}
	}
}

 

© 著作权归作者所有

zheng_pat
粉丝 26
博文 97
码字总数 27693
作品 0
海淀
程序员
私信 提问
interrupt、interrupted和isInterrupted的区别

1.interrupt() interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。 注意:线程中断仅仅是改变线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态位并做出...

激情的狼王丶21
2017/12/19
0
0
对Java中interrupt、interrupted和isInterrupted的理解

今天在看到Thread类的isInterrupted方法可以获取线程的中断状态: 于是写了个例子想验证一下: 内容很简答:主线程main启动了一个子线程Worker,然后让worker睡500ms,而main睡200ms,之后m...

摆渡者
2016/11/13
1K
2
interrupt、interrupted 、isInterrupted 区别

1、interrupt interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。 注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理...

凯奥斯
2013/04/07
298
1
java多线程中的interrupt方法的使用

在java中,开启一个多线程是很简单的,只需要new一个runnable就可以了,但是要停止一个线程,却不能简单的使用Thread.stop()方法。 首先来说说java中的中断机制,Java中断机制是一种协作机制...

summerpxy
2014/02/11
4.9K
3
Java 多线程:Lock接口(接口方法分析,ReentrantLock,ReadWriteLock

前言 *** 当我们了解了多线程生成的原因之后,会有相应的解决办法,最典型的就是 synchronized 和 lock。lock可以说是 synchronized 的一个替代品,synchronized 能做的事,lock 基本都可以做...

icanos
2016/07/21
15
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
16
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部