`
Givemefive555
  • 浏览: 7056 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一个例子说明Thread interrupt() interrupted() isInterrupted()三个方法关系和区别

阅读更多

直接贴上例子

 

public class InteruptTest extends Thread {
	static int i = 0;

	@Override
	public void run() {
		while (!Thread.currentThread().isInterrupted()) {
			// i happy run , please break me
			System.out.println("I'm runing " + i++);
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				Thread.currentThread().interrupt();//①:发出中断请求,设置中断状态
				System.out.println(Thread.currentThread().isInterrupted());//②:判断中断状态(不清除中断状态)
				System.out.println(Thread.interrupted());//③:判断中断状态(清除中断状态)
			}
			System.out.println("current thread haven't been broken");
		}

	}

	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new InteruptTest();
		t1.start();
		Thread.sleep(1000);
		t1.interrupt();
	}
}

 这里有几个关键点是:

 

①:调用Thread.currentThread().interrupt()方法并不会立刻中断当前线程,只有等当前线程阻塞在类似sleep和wait等操作上才会执行

②:interrupt()会发出中断命令,而isInterrupted()和interrupted()并不会发出中断线程的命令;

  isInterrupted()和interrupted()的区别在于 interrupted会清除中断的状态,所以上面实例程序    会一直运行。如果注释掉第三点(catch代码库第三条),则程序会在下一次到达sleep的时候终止

 

 

 

 

 

分享到:
评论

相关推荐

    java线程中的interrupt,isInterrupt,interrupted方法

    在 Java 中,线程(Thread)类提供了三个相关的方法:interrupt、isInterrupted 和 interrupted,这三个方法都是用于处理线程的中断状态的。下面我们将详细介绍这三个方法的用法和区别。 interrupt 方法 interrupt...

    Thread类的interrupt(),interrupted(),isInterrupted()1

    在Java多线程编程中,理解`Thread`类中的`interrupt()`、`interrupted()`和`isInterrupted()`方法至关重要,因为它们与线程中断机制紧密相关。线程中断是Java提供的一种协作式中断机制,它并不强制结束线程,而是...

    Java中interrupt的使用.docx

    取而代之的是使用中断机制,这个机制主要通过`interrupt()`, `isInterrupted()`, 和 `interrupted()`三个方法来实现。 1. `interrupt()`方法:这个方法是用来设置目标线程的中断状态。当你在一个线程上调用另一个...

    JAVA多线程之中断机制stop()、interrupted()、isInterrupted()

    本文将深入探讨`stop()`, `interrupted()`以及`isInterrupted()`这三个方法,并分析它们的工作原理和应用场景。 1. `stop()`方法: `stop()`方法在早期的Java版本中被用来强制终止一个线程的执行。但是,由于这种...

    浅谈Java线程Thread之interrupt中断解析

    在Java中,interrupt机制的实现主要通过三个方法来实现: 1. Thread.interrupt():设置当前中断标记为true,类似属性的set方法。 2. Thread.isInterrupted():检测当前的中断标记,类似属性的get方法。 3. Thread....

    java线程强制停止的两个Demo

    在这个例子中,当主线程调用`thread.interrupt()`时,`run()`方法中的`isInterrupted()`检查将返回true,导致循环结束,线程执行完毕后会自动关闭。 总结来说,虽然Java中`Thread.stop()`方法可以强制停止线程,但...

    java多线程例子.pdf

    标题和描述中并未直接提供关于Java多线程的具体例子,但是从给定的【部分内容】中我们可以提取和概括出多个关于Java多线程编程的知识点。 1. Java多线程基础概念: Java多线程是Java语言支持并发编程的一个重要...

    JavaThread.pdf

    - Thread.getThreadGroup()获取线程所属的线程组,Thread.interrupt()和Thread.currentThread().interrupted()分别用于中断和检查当前线程是否被中断。 10. **线程的等待/通知机制** - 使用wait()、notify()、...

    java 多线程例子

    线程可以通过调用`interrupt()`方法请求中断,而其他线程可以通过检查`isInterrupted()`或`interrupted()`方法来响应中断请求。 六、线程优先级 Java提供了10个线程优先级,从Thread.MIN_PRIORITY(1)到Thread.MAX_...

    Java多线程中断机制三种方法及示例

    "Java多线程中断机制三种方法及示例" ...Java多线程中断机制是通过`interrupt()`,`interrupted()`和`isInterrupted()`三个方法来实现的。这三个方法都是Thread类中的方法,用于实现线程的中断机制。

    java多线程例子.doc

    接下来,我们关注线程的中断相关方法:`interrupt()`、`interrupted()`和`isInterrupted()`。`interrupt()`方法用于中断一个线程,设置线程的中断标志位。而`interrupted()`和`isInterrupted()`都是用来检查线程是否...

    JavaThread中断机制共11页.pdf.zip

    Java中的线程中断状态是一种标志,由`Thread.isInterrupted()`和`Thread.interrupted()`两个方法来检查和清除。`isInterrupted()`用于判断线程是否被中断,不会清除中断状态;而`interrupted()`不仅检查中断状态,...

    java中断线程的正确姿势完整示例.rar

    在这个例子中,主线程启动了一个新的线程并延迟5秒后中断。工作线程在循环中检查中断状态,一旦检测到中断,就结束任务并清理资源。 总之,Java中断线程需要遵循一套规范,确保线程能够安全、有序地停止。通过正确...

    理解多线程,写一个多线程应用程序,要求能在用户级实现线程的调度,如启动、挂起、恢复、停止,的C thread、java thread实现。

    Java中,`join`方法有类似功能,而`interrupt`方法可以用来中断线程,通常配合`isInterrupted`或`interrupted`检查中断状态。 在实际应用中,线程调度还需要考虑线程同步和互斥问题,以防止数据竞争和死锁。C语言中...

    Thread_notes

    1. 继承Thread类:创建一个新类,该类直接或间接继承自Thread类,然后重写Thread类的run()方法。当创建此类的实例并调用其start()方法时,就会启动一个新的线程,并在run()方法中执行代码。这种方式相对直接,但每个...

    java中 如何终止一个线程

    本篇文章将详细探讨如何使用`interrupt()`方法安全地终止一个线程。 #### 一、为什么不能强制停止线程? 在Java早期版本中,提供了`Thread.stop()`方法来直接终止线程,但这种方法存在严重的安全问题。例如,它...

    java 多线程实例

    ### Java多线程实例分析与深入理解 #### 一、多线程实例解析 ##### 1.1 实例概述 本实例旨在通过两个不同...同时,对`start()`方法和中断相关的三个方法进行了深入剖析,有助于更好地理解和运用Java多线程编程技术。

    利用Thread创建线程-java

    但这并不意味着线程会立即停止,而是设置线程的中断标志,线程需要在适当的地方检查`isInterrupted()`或`interrupted()`方法来响应中断请求。 8. **线程池** Java提供`ExecutorService`和`ThreadPoolExecutor`等...

    处理 InterruptedException1

    中断状态可以通过 Thread.isInterrupted() 来读取,并且可以通过一个名为 Thread.interrupted() 的操作读取和清除。 中断是一种协作机制,当一个线程中断另一个线程时,被中断的线程不一定要立即停止正在做的事情。...

Global site tag (gtag.js) - Google Analytics