2014-10-04 85 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函數調用,通道等有很多(數千)。

相關問題