2009-05-27 12 views

Odpowiedz

9

Powinieneś spróbować the java tutorials od Sun na współbieżności.

+1

I http://www.javaconcurrencyinpractice.com/ (Strona, a najlepiej książka). –

+0

tak, to świetna książka, zdecydowanie warta, jeśli chce kontynuować to dalej niż bardzo proste przykłady. –

0

Przetwarzanie obrazu i pobieranie danych internetowych zwykle blokuje interfejs użytkownika, co czyni go dobrymi kandydatami do projektowania wielowątkowego.

1

Przykłady ServerSocket są dość proste do przetestowania i wykorzystania zwięźle.

3

Polecam książkę Concurrent Programming in Java: Design Principles and Patterns autorstwa Douga Lea. Doug Lea był jednym z moich profesorów w SUNY Oswego - wspaniałym profesorze, genialnym człowieku. Książka jest znakomita i daje mnóstwo wspaniałych informacji na temat pisania dobrego kodu wielowątkowego w Javie.

O tak, a Doug Lea napisał większość z java.util.concurrent. Jest więc całkiem dobrym autorytetem w tej dziedzinie ;-)

0

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.

Powiązane problemy