Concurrency: State Models & Java Programs, 2nd Edition