Since the increment
method is static
it will synchronize on the class object for the ThreadSafeClass
. The decrement
method is not static and will synchronize on the instance used to call it. I.e., they will synchronize on different objects and thus two different threads can execute the methods at the same time. Since the ++
and --
operations are not atomic the class is not thread safe.
Also, since count
is static
, modifying it from decrement
which is a synchronized instance method is unsafe since it can be called on different instances and modify count
concurrently that way.