Effective Java (3rd Edition) - Joshua Bloch
Full of recommendations on how to write good Java code and, especially, good APIs. Written by one of the architects of the Collections library.
Core Java SE 9 for the Impatient - Cay Horstmann
Solid coverage of the core of Java that you want to know.
Modern Java in Action - Raoul-Gabriel Urma, et al.
Covers Java 8, 9, and 10 with more depth on Lambdas and Streams along with "functional reactive". Also covers the latest on concurrent classes, such as CompleteableFuture and the fork-join mechanism (that underlies parallel streams). You'll also get the earlier edition of this book that covers Java 8 only.
Refactoring: Improving the Design of Existing Code (1st Edition) - Martin Fowler, et al
The first edition of this book uses Java code for the examples. This book explains the concrete steps to change your code in safe and predictable ways so that it's easier to work with and more testable. It also shows how to recognize "code smells" (code that's not great) and how to refactor away those smells.
Spring in Action, 5th Ed. - Craig Walls
Fifth edition covering the latest in Spring 5 and Spring Boot 2. You'll get the fourth edition as well, which covers Spring 4 and a bit of Spring Boot.
Java Concurrency in Practice - Brian Goetz, et al.
While somewhat dated, it's still the go-to book for understanding the depths of concurrent programming in Java. Not for beginners.
The Secrets of Concurrency (#146) - Dr. Heinz M. Kabutz
Not a book, but a regular (and long-running) blog by an expert in Java concurrency. The above link is a good start. However, if it's too advanced for you, then take a look at the basics of threads in the Core Java book mentioned above.