And it would be an awesome coding exercise if you try to implement this problem in Java!
From my own experience, you definitely need hands on experience to improve your understanding of threads and synchronization. When I took the SCJP 1.4 certification (a very long time ago) I just read the chapters on threading & synchronization but didn't write any additional code snippets. I scored 50% on the threads section of the actual exam. When I prepared for SCJP 5.0, I dedicated most of my coding time on threads and concurrency and I scored 87% on the threads section.