Author: Łukasz Wycisk

ThreadLocal i ExecutorService

Ostatnio miałem przyjemność pracować nad funkcjonalnością, do której implementacji wykorzystywałem zmienne typu ThreadLocal. Dzięki temu miałem sposobność jeszcze raz przyjrzeć się koncepcji ThreadLocal. Idea tego podejścia jest całkiem prosta, każdy wątek ma własną instancję mapy ThreadLocalMap, w której przechowuje wartości zmiennych typu ThreadLocal. W momencie, kiedy chcesz uzyskać dostęp do wartości zmiennej przechowywanej ThreadLocal, twoja prośba delegowana jest do mapy ThreadLocalMap aktualnego wątku.

Kiedy chciałbyś zrobić zmienną typu ThreadLocal z dziedziczeniem, wystarczy, że wykorzystasz implementację InheritableThreadLocal. Implementacja ta zapewnia, że w momencie tworzenia nowego wątku otrzyma on wartości ze swojego rodzica.

Kiedy rozpoczynałem implementację wykorzystującą ThreadLocal, zacząłem się zastanawiać jakie mogą być potencjalne problemy. Na pierwszy rzut oka wszystko wygląda elegancko, ale wtedy pomyślałem o ExecutorService.

Read more...

We use cookies to enhance your user experience. By continuing to browse the site, you are agreeing to our use of cookies.
Read more