Skip to content

Instantly share code, notes, and snippets.

@nadar71
Created October 21, 2020 09:36
Show Gist options
  • Save nadar71/61a671674cbdeab26566e84e54ca35f8 to your computer and use it in GitHub Desktop.
Save nadar71/61a671674cbdeab26566e84e54ca35f8 to your computer and use it in GitHub Desktop.
class for executors
import android.os.Handler
import android.os.Looper
import java.util.concurrent.Executor
import java.util.concurrent.Executors
// Global executor pools.
class AppExecutors // singleton constructor
private constructor(private val diskIO: Executor, private val mainThread: Executor,
private val networkIO: Executor) {
fun diskIO(): Executor {
return diskIO
}
fun mainThread(): Executor {
return mainThread
}
fun networkIO(): Executor {
return networkIO
}
private class MainThreadExecutor : Executor {
private val mainThreadHandler = Handler(Looper.getMainLooper())
override fun execute(command: Runnable) {
mainThreadHandler.post(command)
}
}
companion object {
// singleton instantiation
@Volatile private var singleInstance: AppExecutors? = null
val instance: AppExecutors
get(){
return singleInstance ?: synchronized(this) {
AppExecutors(
Executors.newSingleThreadExecutor(),
Executors.newFixedThreadPool(3),
MainThreadExecutor()
)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment