当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Thread interrupt()用法及代码示例


线程类的 interrupt() 方法用于中断线程。如果任何线程处于睡眠或等待状态(即调用 sleep() 或 wait()),则使用 interrupt() 方法,我们可以通过抛出 InterruptedException 来中断线程执行。

如果线程未处于睡眠或等待状态,则调用 interrupt() 方法执行正常行为,不会中断线程,但会将中断标志设置为 true。

用法

public void interrupt()

返回

此方法不返回任何值。

异常

SecurityException:如果当前线程无法修改线程,则抛出此异常。

示例 1:中断停止工作的线程

在这个程序中,中断线程后,我们抛出一个新的异常,使其停止工作。

public class JavaInterruptExp1 extends Thread
{  
    public void run()
    {  
        try
        {  
            Thread.sleep(1000);  
            System.out.println("javatpoint");  
        }catch(InterruptedException e){  
            throw new RuntimeException("Thread interrupted..."+e);
            
        }  
    }  
    public static void main(String args[])
    {  
        JavaInterruptExp1 t1=new JavaInterruptExp1();  
        t1.start();  
        try
        {  
            t1.interrupt();  
        }catch(Exception e){System.out.println("Exception handled "+e);}  
    }  
}

输出:

Exception in thread "Thread-0" java.lang.RuntimeException:Thread interrupted...java.lang.InterruptedException:sleep interrupted
	at JavaInterruptExp1.run(JavaInterruptExp1.java:10)

示例 2:中断一个不停止工作的线程

在这个例子中,在中断线程后,我们处理异常,所以它会从睡眠状态中断,但不会停止工作。

public class JavaInterruptExp2 extends Thread
{  
    public void run()
    {  
        try
        {  
            //Here current threads goes to sleeping state
            // Another thread gets the chance to execute
            Thread.sleep(500);  
            System.out.println("javatpoint");  
        }catch(InterruptedException e){  
            System.out.println("Exception handled "+e);  
        }  
        System.out.println("thread is running...");  
    }  
    public static void main(String args[])
    {  
        JavaInterruptExp2 t1=new JavaInterruptExp2();  
         JavaInterruptExp2 t2=new JavaInterruptExp2();
        // call run() method 
        t1.start(); 
        // interrupt the thread 
        t1.interrupt();  
    }  
}

输出:

Exception handled java.lang.InterruptedException:sleep interrupted
thread is running...

示例 3:中断行为正常的线程

在这个程序中,线程执行过程中没有发生异常。这里,interrupt() 方法只将中断标志设置为真,Java 程序员可以使用它来停止线程。

public class JavaInterruptExp3 extends Thread
{  
    public void run()
    {  
        for(int i=1; i<=5; i++)  
            System.out.println(i);  
    }  
    public static void main(String args[])
    {  
        JavaInterruptExp3 t1=new JavaInterruptExp3();  
        // call run() method
        t1.start();  
        t1.interrupt();  
    }  
}

输出:

1
2
3
4
5






相关用法


注:本文由纯净天空筛选整理自 Java Thread interrupt() method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。