2014-10-04 78 views
2

我正在寻找一个引发InterruptedException的方法列表。到目前为止,我有sleep() & join()Threadwait()Object。 Java中有没有其他地方抛出InterruptedException或者这是它?以某种方式等待并抛出InterruptedException的Java方法

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

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

编辑:改述多一点的问:

“抛出在Java中InterruptedException方法被调用者wait()join()Objectsleep()Thread这3个方法是‘根’的Java的中断。”

这句话是真的吗?

+4

http://docs.oracle.com/javase/7/docs/api/java/lang/class-use/InterruptedException.html – 2014-10-04 18:17:57

+1

@OliverCharlesworth:挺有意思的,值得一个合适的回答。请张贴它。 – gd1 2014-10-04 18:18:47

+0

@Roam你还没有接受奥利弗的答案。请接受它。 – UDPLover 2014-10-04 18:33:52

回答

3

对于你对InterruptedException S的秒的问题,以下类实际上生成一个(即,throw new InterruptedException(...);)。这是来自我的JDK(OpenJDK 1.8.0.11)。

为了清楚起见,这些都是在某个地方抛出一个新的InterruptedException的所有外部类(即不是内部类),包括在内部类中。换句话说,如果类X具有内部类别X.Y,并且X.Y具有引发新InterruptedException的方法,则它将在此列表中显示为X。它确实不是包括原生生成一个的方法(这就是为什么java.lang.Object没有出现在这里)。抛出InterruptedException原生方法中只有两个类别为java.lang.Objectjava.lang.Thread

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 

下面是从我的JDK类,可以抛出一个,包括人提供在堆栈中的一个较低的水平产生一个完整的清单。

javax.swing.SwingWorker 
javax.swing.SwingUtilities 
java.nio.file.WatchService 
java.nio.channels.AsynchronousChannelGroup 
java.awt.MediaTracker 
java.awt.image.PixelGrabber 
java.awt.EventQueue 
java.util.concurrent.Executors 
java.util.concurrent.CyclicBarrier 
java.util.concurrent.LinkedTransferQueue 
java.util.concurrent.ThreadPoolExecutor 
java.util.concurrent.DelayQueue 
java.util.concurrent.CountDownLatch 
java.util.concurrent.AbstractExecutorService 
java.util.concurrent.TimeUnit 
java.util.concurrent.ForkJoinPool 
java.util.concurrent.LinkedBlockingDeque 
java.util.concurrent.ScheduledThreadPoolExecutor 
java.util.concurrent.CompletableFuture 
java.util.concurrent.ExecutorService 
java.util.concurrent.ExecutorCompletionService 
java.util.concurrent.CompletionService 
java.util.concurrent.locks.ReentrantReadWriteLock 
java.util.concurrent.locks.AbstractQueuedLongSynchronizer 
java.util.concurrent.locks.Lock 
java.util.concurrent.locks.AbstractQueuedSynchronizer 
java.util.concurrent.locks.Condition 
java.util.concurrent.locks.StampedLock 
java.util.concurrent.locks.ReentrantLock 
java.util.concurrent.SynchronousQueue 
java.util.concurrent.ArrayBlockingQueue 
java.util.concurrent.LinkedBlockingQueue 
java.util.concurrent.TransferQueue 
java.util.concurrent.Semaphore 
java.util.concurrent.BlockingQueue 
java.util.concurrent.Phaser 
java.util.concurrent.PriorityBlockingQueue 
java.util.concurrent.FutureTask 
java.util.concurrent.BlockingDeque 
java.util.concurrent.Future 
java.util.concurrent.Exchanger 
java.util.concurrent.ForkJoinTask 
java.lang.UNIXProcess 
java.lang.ref.ReferenceQueue 
java.lang.Process 
java.lang.Object 
java.lang.Thread 
sun.font.CreatedFontTracker 
sun.nio.fs.AbstractWatchService 
sun.nio.ch.AsynchronousChannelGroupImpl 
sun.nio.ch.PendingFuture 
sun.misc.Lock 
sun.misc.ConditionLock 
sun.misc.Queue 
sun.misc.VM 
sun.toolsc.SourceClass 
sun.awt.X11.XBaseWindow 
sun.awt.X11.XSelection 
sun.awt.EventQueueDelegate 
sun.awt.SunToolkit 
sun.awt.im.ExecutableInputMethodManager 
sun.awt.shell.ShellFolder 
sun.awt.AWTAccessor 
sun.applet.AppletPanel 
com.sun.xml.internal.ws.encoding.ImageDataContentHandler 
com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler 
com.sun.corba.se.impl.orbutil.concurrent.DebugMutex 
com.sun.corba.se.impl.orbutil.concurrent.Sync 
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.corba.se.impl.orbutil.threadpool.WorkQueueImpl 
com.sun.org.apache.xml.internal.utils.ThreadControllerWrapper 
com.sun.tools.sjavac.server.CompilerPool 
com.sun.tools.example.debug.bdi.JDIEventSource 
com.sun.tools.example.debug.bdi.ExecutionManager 
com.sun.tools.example.debug.bdi.ThreadInfo 
com.sun.tools.example.debug.gui.ContextManager 
com.sun.tools.jdi.EventQueueImpl 
com.sun.jmx.remote.internal.ArrayNotificationBuffer 
com.sun.jmx.remote.internal.NotificationBuffer 
com.sun.jmx.snmp.daemon.SnmpAdaptorServer 
com.sun.jmx.snmp.daemon.CommunicatorServer 
com.sun.jndi.ldap.EventQueue 
com.sun.jdi.event.EventQueue 
com.sun.swing.SwingUtilities3 
+0

我相信也会有一些本地方法导致/抛出InterruptedException .... Thread.join,例如。 – rolfl 2014-10-04 18:52:56

+0

@rolfl是的,我现在添加了这个。只有'java.lang.Thread'和'java.lang.Object'具有抛出'InterruptedException'的本地方法。 – 2014-10-04 18:54:16

2

我不确定是否有全面的列表,但您的当前列表还远远没有完成。

java.util.concurrent.*中的很多方法都会抛出异常。看看这个包中的Future which has a couple和其他人。

然后有NIO函数调用,通道等有很多(数千)。

相关问题