Zacząłem od pisania narzędzi do przetwarzania wsadowego, decydując, że nie lubię czekać, i szukając sposobów na równoległe przetwarzanie plików. Przepraszam pseudokodu; moja Java jest naprawdę zardzewiała.
Rozważmy przypadek, w którym coś, co zajmuje trochę czasu, kilka razy zrobić:
foreach(var item in list)
{
doSomethingSlow(item);
}
W tym przypadku może to być korzystne, aby dodać trochę kodu wysyłki do zbudowania wątek z wywołania metody. Sądzę, że normalnym sposobem na zrobienie tego byłoby zdemontowanie anonimowego wątku w następujący sposób. Jeśli chcesz mieć możliwość wskazania wątku dla większej kontroli, anulowania itp., Musisz wdrożyć i utworzyć instancję klasy, która dziedziczy z wątku.
new Thread({
public void run(){
doSomethingSlow(item);
}
}).start();
Uwaga: Nie sprawdziliśmy, że jest poprawna składnia, używać na własne ryzyko.
Takie podejście powinno zaoszczędzić trochę czasu i otworzyć drzwi do równoległego myślenia. Możesz także spojrzeć na loop unwinding i grać z wieloma różnymi bibliotekami klas równoległych, które są teraz dostępne.
Generalnie nie lubię przykładów zabawek dla kodu, i wolę się uczyć, tworząc coś użytecznego, więc po zabawie z pomysłami w niektórych tutorialach na jakiś czas, polecam zacząć umieszczać trochę sensownego współbieżnego kodu we wszystkich swoich projektach za każdym razem, gdy ma to sens. Nie polecałbym, aby każda linia kodu była równoległa, ponieważ bardzo trudno jest debugować i wprowadza wszędzie zbyt wiele napowietrznych wątków.
I http://www.javaconcurrencyinpractice.com/ (Strona, a najlepiej książka). –
tak, to świetna książka, zdecydowanie warta, jeśli chce kontynuować to dalej niż bardzo proste przykłady. –