2009-05-27 11 views

risposta

9

Si dovrebbe provare the java tutorials da Sun in concomitanza.

+1

E http://www.javaconcurrencyinpractice.com/ (Il sito, e preferibilmente il libro). –

+0

sì, questo è un grande libro, vale sicuramente la pena di essere preso se vuole perseguire questo oltre a esempi molto semplici. –

0

L'elaborazione e il recupero di dati Web in genere bloccano l'interfaccia utente, rendendoli buoni candidati per un design multithread.

1

Gli esempi ServerSocket sono piuttosto semplici da testare e utilizzare il threading in modo abbastanza sintetico.

3

Raccomando il libro Concurrent Programming in Java: Design Principles and Patterns di Doug Lea. Doug Lea era uno dei miei professori al SUNY Oswego: grande professore, uomo brillante. Il libro è eccellente e ti offre tantissime informazioni sulla scrittura di un buon codice multithread in Java.

Oh sì, e Doug Lea ha scritto la maggior parte di java.util.concurrent. Quindi è un'autorità piuttosto buona sull'argomento ;-)

0

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.

Problemi correlati