2009-05-27 5 views

Antwort

9

Sie sollten the java tutorials von Sun auf Nebenläufigkeit versuchen.

+1

Und http://www.javaconcurrencyinpractice.com/ (Die Website und vorzugsweise das Buch). –

+0

Ja, das ist ein großartiges Buch, das es auf jeden Fall wert ist, wenn man das weiter verfolgen will als sehr einfache Beispiele. –

0

Die Bildverarbeitung und das Abrufen von Webdaten blockieren normalerweise die Benutzeroberfläche und sind daher gute Kandidaten für ein Multithread-Design.

1

ServerSocket Beispiele sind ziemlich einfach zu testen und verwenden Threading ziemlich prägnant.

3

Ich empfehle das Buch Concurrent Programming in Java: Design Principles and Patterns von Doug Lea. Doug Lea war einer meiner Professoren bei SUNY Oswego - großer Professor, brillanter Mann. Das Buch ist exzellent und gibt Ihnen eine Menge toller Informationen zum Schreiben von gutem Multithreading-Code in Java.

Oh ja, und Doug Lea schrieb die meisten java.util.concurrent. Also ist er eine ziemlich gute Autorität auf dem Thema ;-)

0

Ich begann mit dem Schreiben von Batch-Verarbeitung Tools, entschied, dass ich nicht warten möchte, und auf der Suche nach Möglichkeiten, um die Dateien parallel zu verarbeiten. Entschuldige den Pseudocode; Mein Java ist wirklich rostig.

Betrachten wir den Fall, wo Sie etwas tun, das eine Zeit lang mehrmals nimmt:

foreach(var item in list) 
{ 
    doSomethingSlow(item); 
} 

In diesem Fall kann es von Vorteil sein, einige Dispatch Code hinzuzufügen, um einen Faden aus dem Methodenaufruf zu bauen. Ich denke, der normale Java-Weg wäre, einen anonymen Thread wie folgt zu entfernen. Wenn Sie in der Lage sein müssen, auf den Thread für mehr Kontrolle, Löschung usw. zu verweisen, müssen Sie eine Klasse implementieren und instanziieren, die von Thread erbt.

new Thread({ 
    public void run(){ 
     doSomethingSlow(item); 
    } 
}).start(); 

Hinweis: Ich kann nicht überprüft haben, dass dies die richtige Syntax, verwenden Sie auf eigene Gefahr.

Dieser Ansatz sollte Sie einige Zeit sparen und die Tür zum rohen Denken parallel öffnen. Sie können auch loop unwinding ansehen und mit den vielen verschiedenen parallelen Klassenbibliotheken spielen, die jetzt verfügbar sind.

Normalerweise mag ich keine Spielzeug-Beispiele für Code und lerne lieber, indem ich etwas Nützliches erschaffe. Nachdem ich einige Zeit mit den Ideen in einigen Tutorials gespielt habe, empfehle ich dir, ein wenig sinnvollen, gleichzeitigen Code in all deinen Projekten einzusetzen jedes Mal macht es Sinn. Ich würde nicht empfehlen, dass Sie versuchen, jede Codezeile parallel zu machen, da es sehr schwierig wird zu debuggen und viel zu viele Overhead-Instantiierungs-Threads überall einzuführen.

Verwandte Themen