Sicuramente Thinking in Java è più che ottimo come libro, ho amici universitari che me ne hanno parlato più che bene, se posso sottoporti anche un'alternativa ti direi di dare un'occhiata anche a "Concetti di Informatica e fondamenti di Java2", di Cay S. Horstmann (sito dell'autore: http://www.horstmann.com/ ).
Il titolo originale è "Big Java" e sul sito dell'autore puoi scaricare le soluzioni ai molti esercizi contenuti nel libro.

E' edito sempre dall'Apogeo, la pagina di librinformatica è questa.

Se invece vuoi dare un'occhiata alla pagina dell'Apogeo è questa.

Io questo libro lo sto usando come autodidatta, essendo il C il linguaggio che conosco meglio prima di questo, ho trovato molto interessante l'introduzione alla OOP fatta da Horstmann in questo testo, comunque alla prima occasione conto di dare un'occhiata anche a Thinking in Java, o comunque a qualche testo che mi permetta un'approfondimento di questo linguaggio.

Ciao