如何安全中断一个正在运行的线程? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dvsusan123
V2EX    Java

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

  •  
  •   dvsusan123 2024-04-21 11:50:21 +08:00 3788 次点击
    这是一个创建于 605 天前的主题,其中的信息可能已经有所发展或是发生改变。
    线程是操作系统进行运算调度的最小单位,所以线程是系统级别的概念。

    在 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  
       2024-04-21 12:10:27 +08:00   10
    想引流就搞点像样的东西
    dvsusan123
        2
    dvsusan123  
    OP
       2024-04-21 12:12:00 +08:00
    最近就业形式有点困难,我建了一些工作内推群,里面有一些工作内推的机会,有需要的小伙伴,可以加我微信:su_san_java ,备注:v2ex+所在城市,即可拉你进群。
    dvsusan123
        3
    dvsusan123  
    OP
       2024-04-21 12:13:52 +08:00
    @cppc 别急,我的干货文章很多,后面会逐步发表的,第一次玩这个网站,先发一篇简短的内容跑一下流程。
    kenvix
        4
    kenvix  
       2024-04-21 12:15:07 +08:00
    这种 Java 入门的东西就没必要拿来引流了吧
    dvsusan123
        5
    dvsusan123  
    OP
       2024-04-21 12:16:10 +08:00
    @kenvix 哈哈哈,收到,我后面发点有深度的,先发一篇文章试试水。
    bashbot
        6
    bashbot  
       2024-04-21 12:28:36 +08:00
    推广请发推广节点
    建议先去看下 guide https://v2ex.com/go/guide
    在这个论坛发言请珍惜自己账号和 IP
    dvsusan123
        7
    dvsusan123  
    OP
       2024-04-21 12:32:20 +08:00
    @bashbot 收到
    macaodoll
        8
    macaodoll  
       2024-04-21 13:04:22 +08:00 via Android
    毫无营养的水文
    midsolo
        9
    midsolo  
       2024-04-21 13:11:08 +08:00   4
    这是 v 站,一个技术大佬扎堆的地方,发入门级别的东西确实会挨喷。

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


    在 v 站想引流的话真的需要搞点像样的东西,别弄一些烂大街的八股文,这样会显得自己 low level 。
    lllllliiii
        10
    lllllliiii  
       2024-04-21 13:35:18 +08:00
    我的评价是一托
    dvsusan123
        11
    dvsusan123  
    OP
       2024-04-21 14:08:29 +08:00
    @macaodoll 长篇好文要注册满 15 天之后,才能发。
    thomaspaine
        12
    thomaspaine  
       2024-04-21 19:03:00 +08:00
    @dvsusan123 那就别发了,你猜多少人已经直接 block 你了
    zfjdif
        13
    zfjdif  
       2024-04-21 19:48:52 +08:00
    block 了,下次记得上干货 XD
    IvanLi127
        14
    IvanLi127  
       2024-04-21 20:26:06 +08:00
    能换个地方侮辱人么?快去做点功课吧,这里没那么多韭菜给你割。
    dvsusan123
        15
    dvsusan123  
    OP
       2024-04-21 20:46:10 +08:00
    @IvanLi127 有些人太自以为是了,我怎么割韭菜了?
    MIUIOS
        16
    MIUIOS  
       2024-04-21 20:57:25 +08:00
    能上 V 站就可以排除掉大部分小白了,和你发的文章内容太冲突了, 推不开的
    zuixinwenyue
        17
    zuixinwenyue  
       2024-04-22 09:51:57 +08:00
    怎么举报?
    tongqe
        18
    tongqe  
       2024-04-22 10:40:19 +08:00
    站长,把这人屏蔽了吧
    sleepyfevniv
        19
    sleepyfevniv  
       2024-04-22 13:04:51 +08:00
    本来点进来还以为又有什么骚操作呢,结果一看就是烂大街的东西。甚至还不如 anything 那个人的帖子有趣
    dvsusan123
        20
    dvsusan123  
    OP
       2024-04-22 15:15:37 +08:00
    @zuixinwenyue 你敢不敢写一篇文章出来看看?
    dvsusan123
        21
    dvsusan123  
    OP
       2024-04-22 15:15:47 +08:00
    @tongqe 你敢不敢写一篇文章出来看看?
    8355
        22
    8355  
       2024-04-22 15:57:45 +08:00
    你最后想说啥啊。。优雅停机?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1009 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:33 PVG 02:33 LAX 10:33 JFK 13:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86