有关线程的问题

threads.start(()=>{
  log("..1")
  threads.currentThread().interrupt()
//  sleep(20)
  log("..2")
})

这段代码,按正常逻辑先输出..1,然后线程中断。但我实际测试时发现,仍然会先后输出..1和..2,这说明 threads.currentThread().interrupt()没有及时中断线程的执行。当我尝试在threads.currentThread().interrupt()后面给了一个sleep后,我发现线程是能按正常逻辑中断了。
这么看来,这个interrupt()中断线程是一个耗时的异步操作?

幽篁 · 4 天前
第 1 条补充
·
3 天前

难道sleep阻塞操作,会在sleep结束后,让线程自动检查中断状态?sleep完成后,当线程检查到中断状态后就直接中断了?

回答

神秘机师
248
· 4 天前

interrupt 只是标记中断,可以搜下 java interrupt

1
幽篁 · 3 天前

我这上面这段代码,如果sleep(20)没注释掉的话,是只会输出..1的,如果只是标记中断的话,那为什么线程会中断呢?

0