A visualization system that is capable of displaying vital information of a multithreaded program for students is designed to understand the dynamic behavior, to grasp inner working of popular synchronization primitives, and to help pinpoint race conditions and deadlocks. The important features of the system are analyzed. Combined with class library, students will not only learn multithreaded programming easily, but also vividly see the dynamic behavior of running multithreaded program and the interaction of synchronization primitives.