You can do this with ThreadPoolExecutor with kernel size and maximum pool 1.
, SynchronousQueue ( ), , , , RejectedExecutionException.
( ):
new ThreadPoolExecutor(1, 1, 1L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
, - . DiscardPolicy, .
, . corepool maxpool, .