kar*_*rts 2 java multithreading blocked interrupt wait
最近,我正在用Java开发多线程。想了解一个线程是否处于阻塞状态为什么不能被中断?为何只有在等待状态下才能中断线程?基本上,为什么我们需要两个可以被中断而另一个不能被中断的线程状态?
这个问题可能是非常基本的,但是,我试图理解事物,而不仅仅是记住它们。
有人假设您的意思是导致线程停止其当前操作并抛出InterruptedException?Java中的线程中断只是一个标志。您可以interrupt()在BLOCKED线程上调用就可以了,下次代码对其进行检查时,将看到该标志。
实现这种功能的主要问题是,关键字(synchronized)应该如何引发异常? InterruptedException是一个检查的异常,必须用throws InterruptedException!声明语言中的每个同步方法(和块),对它不是一个有用的练习。
中断是一种通信工具,通常用于让线程知道需要检查的系统状态。该名称是从硬件中设置的标志继承而来的,以使微处理器知道需要检查的特定状态(例如某些输入引脚上设置的新值)。不要过多地理解“中断”这个名称,并认为它是用来破坏另一个线程中程序流的工具。它不是。因此,即使确实引发异常的方法都将其声明为已检查,其他线程也可以随意忽略它,并在需要时继续等待。能够任意中断另一个线程的BLOCKED状态将破坏程序流,这不是目的。
| 归档时间: |
|
| 查看次数: |
3156 次 |
| 最近记录: |