This book seems to be a better than average place to start your study of concurrent programming.
The main thrust of this book is Concurrent programming. The Java aspect is simply that you need some language to use. The author gives you a quick overview of Java in the early chapters, possibly enough for the experienced programmer who has never learnt Java. Enough that is if you want to learn about concurrent programming, not if you want to program in Java.
The problems of concurrent programming are rapidly becoming those of most programmers. Even if you never intend to write a multi-threaded program and never intend to deal with client-server applications your code may well finish up in systems where these and other aspects of concurrent programming are rife.
You need to develop a coding style that will survive in a multi-tasking or multi-threading context. If you still think that static (compile time) data is acceptable you need to put in some study. For example, how often have you seen C++ programmers provide static data members for their classes without any caveats? Pick up almost any magazine for programmers and you will find numerous examples of coding idioms that simply assume that there will be a single thread of execution.
Unlike earlier languages Java has some (all-be-it primitive) support for multiple threads of execution. This makes it a good language to use while learning about such issues as 'race conditions', 'dead locks', 'condition synchronisation' etc.
This book seems to be a better than average place to start your study of concurrent programming. I am not an authority on the subject and so have to believe the author. Until someone contradicts me I will recommend this book as a place to start.