V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dvsusan123
V2EX  ›  Java

如何安全中断一个正在运行的线程?

  •  
  •   dvsusan123 · 12 天前 · 2564 次点击
    线程是操作系统进行运算调度的最小单位,所以线程是系统级别的概念。

    在 Java 中,可以使用 Thread.interrupt()方法安全中断一个正在运行的线程。

    其中 Thread.interrupt()方法用于设置线程的中断状态为"中断"。它并不会直接终止线程的执行,而是给线程一个中断信号。

    在执行线程的代码中,可以通过检查 Thread.interrupted()或 Thread.currentThread().isInterrupted()方法来判断线程是否被中断。

    如果线程被中断,应根据具体情况决定如何处理中断。可以选择抛出 InterruptedException 异常、恢复线程到一个安全的状态,或者终止线程的执行。

    如果线程处于等待状态(如 Thread.sleep()、Object.wait()、Thread.join()等),那么线程会立即从等待状态返回,并且 InterruptedException 异常会被抛出。

    使用 Thread.interrupt()方法可以安全地中断一个正在运行的线程,并通过 Thread.currentThread().isInterrupted()方法检查线程的中断状态。在处理中断时,可以选择抛出 InterruptedException 异常、恢复线程到安全状态或者终止线程的执行。
    22 条回复    2024-04-22 15:57:45 +08:00
    cppc
        1
    cppc  
       12 天前   ❤️ 9
    想引流就搞点像样的东西
    dvsusan123
        2
    dvsusan123  
    OP
       12 天前
    最近就业形式有点困难,我建了一些工作内推群,里面有一些工作内推的机会,有需要的小伙伴,可以加我微信:su_san_java ,备注:v2ex+所在城市,即可拉你进群。
    dvsusan123
        3
    dvsusan123  
    OP
       12 天前
    @cppc 别急,我的干货文章很多,后面会逐步发表的,第一次玩这个网站,先发一篇简短的内容跑一下流程。
    kenvix
        4
    kenvix  
       12 天前
    这种 Java 入门的东西就没必要拿来引流了吧
    dvsusan123
        5
    dvsusan123  
    OP
       12 天前
    @kenvix 哈哈哈,收到,我后面发点有深度的,先发一篇文章试试水。
    bashbot
        6
    bashbot  
       12 天前
    推广请发推广节点
    建议先去看下 guide https://v2ex.com/go/guide
    在这个论坛发言请珍惜自己账号和 IP
    dvsusan123
        7
    dvsusan123  
    OP
       12 天前
    @bashbot 收到
    macaodoll
        8
    macaodoll  
       12 天前 via Android
    毫无营养的水文
    dlmy
        9
    dlmy  
       12 天前   ❤️ 4
    这是 v 站,一个技术大佬扎堆的地方,发入门级别的东西确实会挨喷。

    Java 的 Thread 类在 JVM 中只是一个对象而已,它内部的关键方法都是 native 修饰的,而在 JVM 中是通过 JNI 技术调用 native 修饰的方法。
    当你创建一个 Java Thread 对象时,在这个对象内部,也会创建一个操作系统的线程,这样就把 Java 的线程和操作系统的线程关联起来了。
    在你上面说的调用 Thread.interrupt 方法,增加一个线程中断标识位,底层调用的是 pthread 库中的函数,最终调用操作系统级别的 os::interrupt...


    在 v 站想引流的话真的需要搞点像样的东西,别弄一些烂大街的八股文,这样会显得自己 low level 。
    fzdwx
        10
    fzdwx  
       12 天前
    我的评价是一托
    dvsusan123
        11
    dvsusan123  
    OP
       12 天前
    @macaodoll 长篇好文要注册满 15 天之后,才能发。
    thomaspaine
        12
    thomaspaine  
       12 天前
    @dvsusan123 那就别发了,你猜多少人已经直接 block 你了
    zfjdif
        13
    zfjdif  
       12 天前
    block 了,下次记得上干货 XD
    IvanLi127
        14
    IvanLi127  
       12 天前
    能换个地方侮辱人么?快去做点功课吧,这里没那么多韭菜给你割。
    dvsusan123
        15
    dvsusan123  
    OP
       12 天前
    @IvanLi127 有些人太自以为是了,我怎么割韭菜了?
    totoro52
        16
    totoro52  
       12 天前
    能上 V 站就可以排除掉大部分小白了,和你发的文章内容太冲突了, 推不开的
    zuixinwenyue
        17
    zuixinwenyue  
       11 天前
    怎么举报?
    tongqe
        18
    tongqe  
       11 天前
    站长,把这人屏蔽了吧
    sleepybear1113
        19
    sleepybear1113  
       11 天前
    本来点进来还以为又有什么骚操作呢,结果一看就是烂大街的东西。甚至还不如 anything 那个人的帖子有趣
    dvsusan123
        20
    dvsusan123  
    OP
       11 天前
    @zuixinwenyue 你敢不敢写一篇文章出来看看?
    dvsusan123
        21
    dvsusan123  
    OP
       11 天前
    @tongqe 你敢不敢写一篇文章出来看看?
    8355
        22
    8355  
       11 天前
    你最后想说啥啊。。优雅停机?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   823 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:56 · PVG 03:56 · LAX 12:56 · JFK 15:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.