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


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


ThreadFactory, czyli pool-n-thread-m

Jestem zdania, że nie ma co na siłę dorzucać wielowątkowości do każdej tworzonej aplikacji, jednakże czasem dostajemy zadanie, w którym musimy zrównoleglić wykonywanie zadań. “Dobra” wielowątkowość może poprawić wydajność i czas przetwarzania naszej aplikacji, jednakże taki przywilej niesie ze sobą także różne utrudnienia takie jak choćby debugowanie. Czy możemy to jakoś uprościć?

Czytaj dalej