SR examples from Andrews book "Foundation of Multithreaded, Parallel, and Distributed Programming" translated to Java.
It is meant for a basic course in concurrent programming where exceptions concerning communication and synchronization are masked. Development exceptions (e.g., as a result of assertions for checking input parameters are still used).