Shows how to utilize the Java programming language to write programs that use semaphores, monitors, message passing, remote procedure calls, and the rendezvous for thread synchronization and communication. A Java algorithm animation package is also described and there is a website which supports this publication.