(a) and (b)
Here is the explanation from the book
if a
thread is executing method b() on an object, then it is guaranteed that no other thread executes methods a() and b() concurrently. therefore, the invocation counters i and j will never show more than one concurrent invocation. two threads can concurrently be executing methods b() and c(). therefore the invocation counter k can easily show more than one concurrent invocation. that's all!
