以某种方式等待并抛出InterruptedException的Java方法

时间:2014-10-04 18:14:53

标签: java interrupt

我正在寻找抛出InterruptedException的方法列表。到目前为止,我已经sleep()& join()的{​​{1}}和Thread的{​​{1}}。 在Java的任何地方是否有任何其他人抛出wait()或者这就是它?

注意:我没有询问有关Java中断的任何其他信息。只是想获得全面的清单。

// =====================================

编辑:将Q重新改写一下:

"在Java中抛出Object的方法是调用InterruptedException的{​​{1}},InterruptedExceptionwait()以及{ {1}}。这三种方法是"根" Java中断。"

这句话是真的吗?

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

关于InterruptedException root 的第二个问题,以下类实际上生成一个(即throw new InterruptedException(...);)。这是我的JDK(OpenJDK 1.8.0.11)。

为清楚起见,这些是在某个地方抛出新InterruptedException的所有外部类(即非内部类),包括在内部类中。换句话说,如果类X具有内部类X.Y,而X.Y具有抛出新InterruptedException的方法,则它将在此列表中显示为{{ 1}}。 包含生成一个原生的方法(这就是为什么X不会出现在这里)。使用原生方法抛出java.lang.Object的两个类只有InterruptedExceptionjava.lang.Object

java.lang.Thread

这里是我的JDK中可以抛出一个类的完整列表,包括在堆栈中较低级别生成的类。

java.util.concurrent.CyclicBarrier
java.util.concurrent.LinkedTransferQueue
java.util.concurrent.ForkJoinPool
java.util.concurrent.CompletableFuture
java.util.concurrent.locks.AbstractQueuedLongSynchronizer
java.util.concurrent.locks.AbstractQueuedSynchronizer
java.util.concurrent.locks.StampedLock
java.util.concurrent.SynchronousQueue
java.util.concurrent.Phaser
java.util.concurrent.FutureTask
java.util.concurrent.Exchanger
java.util.concurrent.ForkJoinTask
java.lang.InterruptedException
com.sun.corba.se.impl.orbutil.concurrent.DebugMutex
com.sun.corba.se.impl.orbutil.concurrent.Mutex
com.sun.corba.se.impl.orbutil.concurrent.CondVar
com.sun.corba.se.impl.orbutil.concurrent.ReentrantMutex
com.sun.jmx.snmp.daemon.SnmpAdaptorServer
com.sun.jmx.snmp.daemon.CommunicatorServer

答案 2 :(得分:2)

我不确定是否有完整的清单,但您目前的清单还远未完成。

java.util.concurrent.*中的许多方法抛出异常。只需查看Future which has a couple以及该软件包中的其他人。

然后是NIO功能调用,频道等。那里有很多(数千)。