- Ile musi umieć juniorek javy z wielowątkowości? Wystarczy by miał obcykany producer-consumer?
- A na hadoopka czy w ogóle przyda się niecobardziej zaawansowana znajomość wielowątkowości niż
parallelStream
? - Jak polecacie się jej uczyć poza tutorialem z Oracle? Taka książka będzie OK na początek?
0
0
ta książka to tylko potwierdzenie by junior jednak nie brał się za wielowątkowość w java
0
nohtyp napisał(a):
ta książka to tylko potwierdzenie by junior jednak nie brał się za wielowątkowość w java
co masz na myśli?
10
Z niżej-poziomowych zagadnień fajnie żebyś wiedział cokolwiek na temat
- tego czym są wątki i czym się różnią od procesów, jak to rzutuje na ich wykorzystanie (nie tylko w Javie)
- podstawowych pojęć i struktur, na które możesz się natknąć przy pracy z wątkami: od muteksów i semaforów, przez zmienne i operacje atomowe, sekcje krytyczne, deadlocki, głodzenie, wyścigi, zmienne warunkowe, pule procesów / pule wątków, kwestie dostępu do pamięci z wielu wątków, sposoby synchronizacji wątków, pinning, massive parallelism itp. itd.
- coś o rodzajach zależności (WAR, WAW, RAW), których da się pozbyć i jak się ich pozbywać
- jak poznać że coś da się łatwo lub trudno zrównoleglić, algorytmy np. typu embarassingly parallel
- coś o pamięciach UMA, NUMA, ccNUMA itd.
- jakie są różnice przy pracy z wielowątkowością, wieloprocesowością i środowiskiem rozproszonym, jakaś podstawowa wiedza nt. wymiany komunikatów,
Z wyżej-poziomowych
- ogarnij sobie jak używać np. pul procesów/wątków do zrównoleglania zadań itp.
- klasyczne problemy jak choćby ten producent-konsument, pięciu filozofów, bizantyjscy generałowie, konsensus, czytelnicy i pisarze, różne rodzaje porządków zdarzeń itp.
- jakieś protokoły np. MPI (chyba najbardziej bare metal do komunikacji między procesami), jakieś tam RPC, RMI itp.
- algorytmy np. pierścieniowy, tyrana, rozpraszania/zbierania danych między procesami, Chandy-Lamporta, synchronizacji itp. itd.
- coś o skalowalności, skalowalność silna, słaba, prawa Amdahla i Gustaffsona, jak oszacować skalowalność gdy masz narzuty zrównoleglenia, komunikacji etc.
Znając życie i tak przyda Ci się 10% tego, a i tak przez większość czasu będziesz mieć do czynienia z wyżej poziomowymi abstrakcjami które przynajmniej częściowo te rzeczy ukrywają, no ale zawsze lepiej takie rzeczy wiedzieć, niż nie wiedzieć ;)