Package org.bitcoinj.utils
Class Threading
java.lang.Object
org.bitcoinj.utils.Threading
Various threading related utilities. Provides a wrapper around explicit lock creation that lets you control whether
 bitcoinj performs cycle detection or not. Cycle detection is useful to detect bugs but comes with a small cost.
 Also provides a worker thread that is designed for event listeners to be dispatched on.
- 
Nested Class SummaryNested Classes
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic com.google.common.util.concurrent.CycleDetectingLockFactorystatic final ExecutorA dummy executor that just invokes the runnable immediately.static com.google.common.util.concurrent.ListeningExecutorServiceA caching thread pool that creates daemon threads, which won't keep the JVM alive waiting for more work.An exception handler that will be invoked for any exceptions that occur in the user thread, and any unhandled exceptions that are caught whilst the framework is processing network traffic or doing other background tasks.static ExecutorAn executor with one thread that is intended for running event listeners on.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic com.google.common.util.concurrent.CycleDetectingLockFactory.Policystatic voidstatic ReentrantLockstatic ReentrantLockstatic voidsetPolicy(com.google.common.util.concurrent.CycleDetectingLockFactory.Policy policy) static voidstatic voidPut a dummy task into the queue and wait for it to be run.static void
- 
Field Details- 
USER_THREADAn executor with one thread that is intended for running event listeners on. This ensures all event listener code runs without any locks being held. It's intended for the API user to run things on. Callbacks registered by bitcoinj internally shouldn't normally run here, although currently there are a few exceptions.
- 
SAME_THREADA dummy executor that just invokes the runnable immediately. Use this over more complex executors (e.g. those extendingExecutorService), which are overkill for our needs.
- 
uncaughtExceptionHandlerAn exception handler that will be invoked for any exceptions that occur in the user thread, and any unhandled exceptions that are caught whilst the framework is processing network traffic or doing other background tasks. The purpose of this is to allow you to report back unanticipated crashes from your users to a central collection center for analysis and debugging. You should configure this before any bitcoinj library code is run, setting it after you started network traffic and other forms of processing may result in the change not taking effect.
- 
factorypublic static com.google.common.util.concurrent.CycleDetectingLockFactory factory
- 
THREAD_POOLpublic static com.google.common.util.concurrent.ListeningExecutorService THREAD_POOLA caching thread pool that creates daemon threads, which won't keep the JVM alive waiting for more work.
 
- 
- 
Constructor Details- 
Threadingpublic Threading()
 
- 
- 
Method Details- 
waitForUserCodepublic static void waitForUserCode()Put a dummy task into the queue and wait for it to be run. Because it's single threaded, this means all tasks submitted before this point are now completed. Usually you won't want to use this method - it's a convenience primarily used in unit testing. If you want to wait for an event to be called the right thing to do is usually to create aSettableFutureand then call set on it. You can then either block on that future, compose it, add listeners to it and so on.
- 
lock
- 
lock
- 
warnOnLockCyclespublic static void warnOnLockCycles()
- 
throwOnLockCyclespublic static void throwOnLockCycles()
- 
ignoreLockCyclespublic static void ignoreLockCycles()
- 
setPolicypublic static void setPolicy(com.google.common.util.concurrent.CycleDetectingLockFactory.Policy policy) 
- 
getPolicypublic static com.google.common.util.concurrent.CycleDetectingLockFactory.Policy getPolicy()
 
-