CountDownLatch – blokujące odliczanie

Pakiet java.util.concurrent wprowadził wiele ciekawych i ułatwiających codzienną pracę rozwiązań. Jednym z nich jest klasa CountDownLatch, która jest tematem tego wpisu. Jest to implementacja, która może być wykorzystana do bezpiecznego wątkowo odliczania. Możecie się zastanawiać do czego może przydać się tak prosty mechanizm jak odliczanie, zapraszam więc do wpisu po wyjaśnienia.

Czytaj dalej


java.time.Clock – testowanie czasu

Proces testowania przez wielu z nas traktowany jest podobnie jak sztuka. Dobre testy powinny spełniać wiele czynników by mogły być nazwane “dobrymi”. Jednym z nich jest brak zależność od czasu. Nasze testy powinny być tak szybkie jak to tylko możliwe oraz nie powinny zależeć od czynników zewnętrznych (mówimy o testach jednostkowych). Aby pozbyć się zależności czasowych Java 8 dostarczyła nam nową klasę java.time.Clock.

Czytaj dalej


Co kryje plik .class?

Dziś zejdziemy poziom niżej w stosunku do kodu, z którym mamy styczność na co dzień. Postaram się pokazać wam co znajduje się w skompilowany pliku .class oraz jaki ma to wpływ na JVM’a na przykładzie aplikacji enterprise, czyli HelloWorld. W samym skompilowanym pliku oprócz kodu bajtowego z instrukcjami dla JVM, znajdziemy także metadane. Jeśli chcesz się dowiedzieć co dokładnie siedzi w środku, zapraszam!

Czytaj dalej


ForkJoinPool czyli dziel i zwyciężaj

ForkJoinPool jest specyficzną pulą, która została dodana w Javie 7, jednakże na dobre zaczęto jej używać w Javie 8. Pula ta służy do realizacji zadań, które da się podzielić. Do podziału problemów stosuje ona algorytm dziel i zwyciężaj, a te podzielone zadania przydzielane są dzięki wykorzystaniu algorytmu Work-Stealing. Jest to bardzo ciekawa pula, ponieważ jest współdzielona przez cały proces uruchomiony na JVM.

Czytaj dalej