当前位置: 首页 > 编程笔记 >

Java中断一个线程操作示例

黄弘盛
2023-03-14
本文向大家介绍Java中断一个线程操作示例,包括了Java中断一个线程操作示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java中断一个线程操作。分享给大家供大家参考,具体如下:

一 点睛

中断一个线程,意味着该线程在完成任务之前,停止它正在进行的一切当前的操作。

有三个比较常用的函数

interrupt():一个正在运行的A线程,可以调用B线程对应的interrupt方法来中断线程B。这个方法的核心功能是,将线程B的中断标识位属性设置为true。

isInterrupted():通过该方法判断某个线程是否处于中断状态。

interrupted():这是一个静态方法,用来获取当前线程的中断状态,并清除中断状态。获取的是清除之前的值,也就是说连续两次调用此方法,第二次一定会返回false。

二 代码

public class SleepInterrupt implements Runnable
{
  public void run()
  {
    try
    {
      System.out.println( "在run()方法中 ——这个线程休眠10秒" );
      Thread.sleep( 10000 );
      System.out.println( "在run()方法中 —— 继续运行" );
    }
    catch( InterruptedException x )
    {
      System.out.println( "在run()方法中 - 中断线程" );
      return;
    }
    System.out.println( "在run()方法中 - 休眠之后继续完成" );
    System.out.println( "在run()方法中 - 正常退出" );
  }
  public static void main( String[] args )
  {
    SleepInterrupt si = new SleepInterrupt();
    Thread newThd = new Thread( si );
    newThd.start();
    // 在此休眠是为确保线程能运行一会
    try
    {
      System.out.println( "在main()方法中——休眠2秒!" );
      Thread.sleep( 2000 );
    }
    catch( InterruptedException e )
    {
      e.printStackTrace();
    }
    System.out.println( "在main()方法中——中断newThd 线程" );
    newThd .interrupt();
    System.out.println( "在main()方法中 ——退出" );
  }
}

三 运行

在main()方法中——休眠2秒!
在run()方法中 ——这个线程休眠10秒
在main()方法中——中断newThd 线程
在run()方法中 - 中断线程
在main()方法中 ——退出

四 说明

interrupt()方法并不会使正在执行的线程停止执行,它只对wait、join、sleep等方法或由于I/O操作等原因受阻的线程产生影响,使其退出暂停执行的状态。

它对正在运行的线程不起作用。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 我正在阅读这篇文章,关于从一个线程中断另一个线程的建议是 “”“如果正确实施,以下几种方法应该可以奏效。 您可以让两个线程定期检查一些常见的标志变量(例如,将其称为stopNow),并安排两个线程在完成时进行设置。(标志变量需要是volatile…或正确同步的。) 您可以让两个线程定期调用线程。isInterrupted()方法,查看它是否已被中断。然后每个线程都需要调用线程。完成后,在另一个上中

  • 本文向大家介绍C#多线程中的异常处理操作示例,包括了C#多线程中的异常处理操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#多线程中的异常处理操作。分享给大家供大家参考,具体如下: 常规Thread中处理异常 使用Thread创建的子线程,需要在委托中捕捉,无法在上下文线程中捕捉 Task中处理异常 1.仍然可以在委托中捕获异常 2.可以捕获Task.Wait() 或者 Task

  • 问题内容: 在Java中截断文件的最佳实践方法是什么?例如,此虚拟函数仅作为示例来阐明其意图: 由于该文件充当占位符,因此无法将其删除。 问题答案: 使用FileChannel.truncate:

  • 用途: 管理多个线程的执行 线程对象 threading_simple.py import threading def worker(): """thread worker function""" print('Worker') threads = [] for i in range(5): t = threading.Thread(target=worker)

  • 我正在为这个问题寻找一个干净的设计/解决方案:我有两个线程,可以运行用户想要的时间,但最终会在用户发出停止命令时停止。然而,如果其中一个线程突然终止(例如,由于运行时异常),我想停止另一个线程。 现在,这两个线程都执行一个(因此,当我说“stop a thread”时,我的意思是对实例调用一个stop()方法),我想的是避免使用线程(thread类),并使用interface,然后将这两个Runn

  • 我只是一个非开发人员,所以我的问题可能非常简单! 我只是在测试Java多线程的东西,这不是真正的代码。我想知道如何在 Java 中同时更新两个成员变量,以防我们希望它们都同步。举个例子: 在这种情况下(当然,想象一下多线程),我希望能够保证对< code>items和< code>itemToStatus的任何读取总是返回相同的结果。 因此,如果代码在< code>itemToStatus.put