Concerned about thread safety
Please take a look at this library for inspiration on how to state machine could be defined:
https://projects.spring.io/spring-statemachine/

Should I change locking system to &quot;fair&quot;? =&gt; Could you please clarify what you are trying to achieve
Will it work smoothly with 2 threads? (There's no possibility that the start()/stop() can be accessed at the same time by more than 2 threads) =&gt; Yes. You have declared the only monitor object (lock) and configured corePoolSize = 1, maximumPoolSize = 1.
Does the code have any bugs I can't see? =&gt; I do not understand what is the purpose of this exercise
Any way to write it much simpler? =&gt; I think yes. Work is a singleton. the synchronized keyword could be used directly on Work's methods. And without clarification, it looks like that the whole solution could be replaced with ThreadPoolExecutor, cause it is not clear why do we need RUNNING, FINALIZING states.