Effective Java (teaches you the common pitfalls) Concurrency in practice (if you're doing multithreaded stuff)