Package net.i2p.util
Class I2PThread
- java.lang.Object
-
- java.lang.Thread
-
- net.i2p.util.I2PThread
-
- All Implemented Interfaces:
Runnable
- Direct Known Subclasses:
DHSessionKeyBuilder.PrecalcRunner
,Elg2KeyFactory
,I2PAppThread
,JobQueueRunner
,X25519KeyFactory
public class I2PThread extends Thread
Preferred overThread
for all router uses. For applications,I2PAppThread
is preferred.Provides the following features:
- Logging to wrapper log on unexpected termination in
run()
. - Notification of OOM to registered listener (the router), which will cause logging to the wrapper log and a router restart
- Catching and logging "OOM" caused by thread limit in
start()
with distinct message, and does not call the OOM listener. - As of 0.9.21, initialization to NORM_PRIORITY (not the priority of the creating thread).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
I2PThread.OOMEventListener
-
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
-
Field Summary
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
addOOMEventListener(I2PThread.OOMEventListener lsnr)
register a new component that wants notification of OOM eventsprotected void
fireOOM(OutOfMemoryError oom)
static void
removeOOMEventListener(I2PThread.OOMEventListener lsnr)
unregister a component that wants notification of OOM eventsvoid
run()
void
start()
Overridden to provide useful info to users on OOM, and to prevent shutting down the whole JVM for what is most likely not a heap issue.-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, suspend, toString, yield
-
-
-
-
Constructor Detail
-
I2PThread
public I2PThread()
-
I2PThread
public I2PThread(String name)
-
I2PThread
public I2PThread(Runnable r)
-
I2PThread
public I2PThread(ThreadGroup g, Runnable r)
-
I2PThread
public I2PThread(ThreadGroup group, Runnable r, String name)
- Since:
- 0.9.23
-
-
Method Detail
-
start
public void start()
Overridden to provide useful info to users on OOM, and to prevent shutting down the whole JVM for what is most likely not a heap issue. If the calling thread is an I2PThread an OOM would shut down the JVM. Telling the user to increase the heap size may make the problem worse. We may be able to continue without this thread, particularly in app context.
-
fireOOM
protected void fireOOM(OutOfMemoryError oom)
-
addOOMEventListener
public static void addOOMEventListener(I2PThread.OOMEventListener lsnr)
register a new component that wants notification of OOM events
-
removeOOMEventListener
public static void removeOOMEventListener(I2PThread.OOMEventListener lsnr)
unregister a component that wants notification of OOM events
-
-