I agree with @ar that sessions == maxSessions may not mean that the the user wants a synchronous queue.
Still setting maximumPoolSize to Integer.MAX_VALUE may lead to issues impacting the jam overall
The current implementation is close to usage of a bounded queue and in my opinion, that should be the default behavior.

Another aspect to consider is the backward compatibility of this class. There may be classes out there extending this class and even overriding the run method. Could be just create a new class and leave this class as is?