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.
Und http://www.javaconcurrencyinpractice.com/ (Die Website und vorzugsweise das Buch). –
Ja, das ist ein großartiges Buch, das es auf jeden Fall wert ist, wenn man das weiter verfolgen will als sehr einfache Beispiele. –