@dfhwze On side note:
- I agree with the fact that changing the spec is probably not a good idea
- I don't see why requestRun() is required, adding requestInterrupt() and overriding run() does not change the spec
- double-checked locking is for improving performance, I don't need that here so I'll just stick with the lock
- I agree with all the rest, thanks