HO RISOLTO IL PROBLEMA!!!!

Lascio la spiegazione di come ho risolto, di modo che possa essere utile agli altri: era tutto più logico e facile di quanto pensassi, sarebbe bastato stare più attento!

Ho notato tramite debug paesano, ossia delle println qui è lì dove mi prendevo il nome del Thread e stampavo il contenuto dell'oggetto Main, che l'oggetto veniva correttamente passato, però arrivato al metodo end(), l'oggetto del Main, framePrinc risultava null e da qui la nullpointerexception.

Tramite lo stacktrace inoltre notavo che l'errore si propagava su oggetti della classe PageExplorer. Questo perchè era un thread creato tramite oggetti della pagina PageExplorer a invocare, tramite altre chiamate, il metodo end(), ossia il metodo dove richiamavo framePrinc e dove avevo la nullpointerexception.

Era quindi quel thread e di conseguenza l'oggetto della classe PageExplorer a non avere conoscenza di framePrinc.

Ho quindi modificato il costruttore della classe Crawler, al posto di aggiungerlo come avevo fatto; questo perchè quando dò il via alla sessione di crawling l'oggetto Crawler sul quale invoco lo start() che poi crea i PageExplorer - quelli che chiameranno il metodo end, per intenderci - non avevano conoscenza dell'oggetto framePrinc. Ho quindi modificato QUESTO costruttore, in modo tale da propagare la conoscenza di framePrinc a tutto il thread.

Spero di essere stato chiaro, se pensate debba essere più preciso per poter aiutare la comunità, ditemi pure!

p.s. un grazie infinito a LeleFT che mi ha aiutato molto e indirizzato!