class Gate : AffinityExecutor
An executor useful for unit tests: allows the current thread to block until a command arrives from another thread, which is then executed. Inbound closures/commands stack up until they are cleared by looping.
alwaysQueue
- If true, executeASAP will never short-circuit and will always queue up.<init> |
Gate(alwaysQueue: Boolean = false) An executor useful for unit tests: allows the current thread to block until a command arrives from another thread, which is then executed. Inbound closures/commands stack up until they are cleared by looping. |
isOnThread |
val isOnThread: Boolean Returns true if the current thread is equal to the thread this executor is backed by. |
taskQueueSize |
val taskQueueSize: Int |
execute |
fun execute(command: Runnable): Unit |
flush |
fun flush(): Unit Run the executor until there are no tasks pending and none executing. |
waitAndRun |
fun waitAndRun(): Unit |
checkOnThread |
open fun checkOnThread(): Unit Throws an IllegalStateException if the current thread is not one of the threads this executor is backed by. |
executeASAP |
open fun executeASAP(runnable: () -> Unit): Unit If isOnThread() then runnable is invoked immediately, otherwise the closure is queued onto the backing thread. |
fetchFrom |
open fun <T> fetchFrom(fetcher: () -> T): T Runs the given function on the executor, blocking until the result is available. Be careful not to deadlock this way Make sure the executor cant possibly be waiting for the calling thread. |