Many Java books appear to treat threads as an add-on or 'just another language feature'. This book sets out by explaining why threads are fundamental to Java programming and provides a solid introduction to Java threads for programmers who have already started using Java. The style is readable, if a little dry.
Key points are clearly highlighted and each chapter has a useful summary.
The general approach is to give an example, explain its shortcomings and progressively improve it. Various synchronisation techniques and issues are covered, including wait and notify, deadlock avoidance, critical sections and lock starvation. There is a good chapter on scheduling policies which explains how to build a thread scheduler and there is a separate chapter on thread groups. Appendices cover the important issue of debugging a threaded application, including a description of the default threads you'll see running and an introduction to jdb . To summarise, you'll find this book useful if you've started using Java and wish to find out more about threading.