Ci sono diversi problemi con Java che richiedono semplicemente una soluzione multi-thread. Due Ho colpito di recente e risolto stati:
- File.list ha problemi orribili se ci sono molte migliaia di file nella cartella.
- SAXParser.parse è un parser di push. Molti utenti di xml preferiscono un parser di pull, ma preferiscono non aggiungere ancora un'altra libreria.
Entrambi questi possono essere aiutati considerevolmente utilizzando una semplice soluzione a due thread.
Nel caso di File.list, eseguire il File.list
in un thread separato con uno speciale FileFilter
che i messaggi di tutti i file presentati ad esso per un BlockingQueue
. Un iteratore su BlockingQueue
può quindi essere utilizzato per consegnare i file al chiamante. Un miglioramento per elencare la directory in modo ricorsivo è un'aggiunta semplice se il codice è scritto correttamente.
Il SAXParser.parse può essere ruotato all'interno come in un modo simile.
Ho fatto entrambe queste cose di recente e ho trovato l'esperienza molto illuminante.
http://stackoverflow.com/questions/ 1835076/small-project-to-learn-java-threads Penso che questo collegamento possa essere d'aiuto per – vinay
+1 per un buon puntatore. – inder
Mi piace quel link, esp. il suggerimento di un'app client-server. @Suman_Sohal, se sei incline matematicamente, le operazioni con matrici, come la moltiplicazione, sono dei classici per imparare il multithreading. – user949300