The LongTaskExecutor can run any Runnable, but preferably that also implements LongTask interface for progress and cancellation.
LongTaskExecutor
Runnable
LongTask