线程 interrupt()方法简介

class T implements Runnable

{

Thread t1,t2;

T()

{

t1=new Thread(this);

t2=new Thread(this);

}

public void run()

{

if(Thread.currentThread()==t2)

{

t1.interrupt();

}

if(Thread.currentThread()==t1)

{

System.out.println("线程t1开始运行!");

try{

System.out.println("线程t1开始休眠10s!");

t1.sleep(10000);

}

catch(InterruptedException e)

{

System.out.println("线程t1被吵醒了!");

}

}

}

}

class A

{

public static void main(String args[])

{

T t=new T();

t.t1.start();

t.t2.start();

}

}

时间: 2024-10-12 07:31:36

线程 interrupt()方法简介的相关文章

Thread类的interrupt方法

一.线程中断 中断可以理解为一个线程的标志位,与线程中断有关的方法 interrupt方法 Thread类的实例方法:中断被调用线程,实际上只是改变了被调用线程 的内部中断状态, ==并不会中断线程== 必须注意API中的这一段描述 If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) methods of the Object class, or of the join(

停止Java线程,小心interrupt()方法

程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的.难以发现的错误. 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程. 背景     中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作.线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个程序.虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果.你最好还是牢记以下的几点告诫. 首先,忘掉

C#多线程开发5:线程的Abort和Interrupt方法

使用线程的Abort方法可以终止线程:而使用线程的Interrupt方法只可以中断处于 WaitSleepJoin 状态的线程,当线程状态不再为 WaitSleepJoin时,线程将恢复执行.在线程上调用Abort方法会引发 ThreadAbortException异常,调用Interrupt方法则会引发ThreadInterruptedException异常. 下面的实例演示了Abort和Interrupt方法的使用. using System; using System.Threading;

Java多线程的中断原理和 interrupt() 几个方法简介

上节讲到,线程被 wait() 通知后进入等待池,可以由本线程的 interrupt() 方法解救,使本线程可以去重新竞争锁等等.是如何实现的呢? 实际上,中断仅仅是在线程对象做一个标记而已,称为中断标志.中断标志默认为false,在线程 t 调用自己的 t.interrupt() 方法后,中断标志就变成true.但是,中断标志为true实际上不会对正常运行的线程产生影响,因为正常运行的线程不会自己去检查自己的中断标志. 只有那些被阻塞的线程才会不停的检查自己的中断标志,这个阻塞包括因 wait

终止线程的方法

1.用标识符flag来停止. public void run() { // TODO Auto-generated method stub while (flag) { System.out .println(name + ":" + (++num)); if(num==10000) changeFlag(); //Thread.currentThread().interrupt(); } } public void changeFlag() { flag=false; } 或者: p

多线程之间的通信(等待唤醒机制、Lock 及其它线程的方法)

一.多线程之间的通信. 就是多个线程在操作同一份数据, 但是操作的方法不同. 如: 对于同一个存储块,其中有两个存储位:name   sex, 现有两个线程,一个向其中存放数据,一个打印其中的数据. 为了解决上述问题中的安全问题(在存放线程进行存放操作的时候, 打印线程不能对共有数据进行操作),所以应当对两个线程       操作共有数据的代码部分进行同步(使用synchronized(),来进行同步, 注意 :使用同一个对象作为同步锁. 二.等待唤醒机制. 在上述案例实现过后运行,会发现:打印

Java Thread.interrupt方法

部分内容引用CSDNdr8737010 比如你在main线程中,开启了一个新的线程new Thread 首先,每个线程内部都有一个boolean型变量表示线程的中断状态,true代表线程处于中断状态,false表示未处于中断状态. 而interrupt()方法的作用只是用来改变线程的中断状态(把线程的中断状态改为true,即被中断). A线程调用wait,sleep,join方法,这时B线程调用了A的interrupt方法而抛出的InterruptedException是wait,sleep,j

Java线程--interrupt join yield setDaemon常用方法的使用

概念: 操作系统可以有多个进程,一个线程可以有一个或多个线程.进程与进程之间不共享内存,都在各自的空间中运行.而线程不仅可以共享内存,还可以用有一个自己的内存空间,叫做线程栈. 线程又称轻量级进程.Java的线程是靠CPU时间片的快速切换实现的,并不是真正的同时进行.每个线程有独立的线程栈和程序计数器.线程在自己的栈中存储变量,使数据互不干扰,对于共同资源,容易引发并发问题,需要同步处理. 创建线程常用的两种方式: 1.继承Thread类,重写run() 2.实现Runnable接口 线程生命周

Thread interrupt() 方法的使用

原文地址:http://blog.csdn.net/biangren/article/details/7522583 interrupt()只是改变中断状态而已:       interrupt()不会中断一个正在运行的线程.这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态.更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException)