Ho iniziato scrivendo gli strumenti di elaborazione batch, decidendo che non mi piace aspettare e cercare modi per elaborare i file in parallelo. Scusa lo pseudo-codice; la mia java è davvero arrugginita.
Si consideri il caso in cui si fa qualcosa che vuole un po 'più volte:
foreach(var item in list)
{
doSomethingSlow(item);
}
In questo caso potrebbe essere utile aggiungere del codice spedizione per costruire un filo fuori della chiamata al metodo. Penso che il modo normale di fare java sarebbe quello di rimuovere un thread anonimo come segue. Se devi essere in grado di puntare al thread per un maggiore controllo, cancellazione, ecc. Dovrai implementare e istanziare una classe che eredita da Thread.
new Thread({
public void run(){
doSomethingSlow(item);
}
}).start();
Nota: non ho controllato che questa è la sintassi corretta, utilizzare a proprio rischio e pericolo.
Questo approccio dovrebbe farti risparmiare tempo e aprire la porta a pensare in modo grossolano in parallelo. Puoi anche guardare loop unwinding e giocare con le numerose librerie di classi parallele ora disponibili.
Generalmente non mi piacciono gli esempi di giocattoli per il codice e preferisco imparare creando qualcosa di utile, quindi dopo aver giocato con le idee in alcuni tutorial per un po ', ti consiglio di iniziare a inserire un po' di codice concorrente ragionevole in tutti i tuoi progetti ogni volta ha senso farlo. Non ti consiglio di provare a rendere parallela ogni linea di codice, dato che diventa molto difficile eseguire il debug e introduce troppe istanze di overhead in tutto il mondo.
E http://www.javaconcurrencyinpractice.com/ (Il sito, e preferibilmente il libro). –
sì, questo è un grande libro, vale sicuramente la pena di essere preso se vuole perseguire questo oltre a esempi molto semplici. –