@startuml package com.iluwatar { abstract class AbstractThreadLocalExample { - RANDOM_THREAD_PARK_END : Integer {static} - RANDOM_THREAD_PARK_START : Integer {static} - RND : SecureRandom {static} + AbstractThreadLocalExample() - getThreadName() : String # getter() : Supplier {abstract} + run() # setter() : Consumer {abstract} } class WithThreadLocal { - value : ThreadLocal + WithThreadLocal(value : ThreadLocal) # getter() : Supplier + remove() # setter() : Consumer } class WithoutThreadLocal { - value : Integer + WithoutThreadLocal(value : Integer) # getter() : Supplier # setter() : Consumer } } WithThreadLocal --|> AbstractThreadLocalExample WithoutThreadLocal --|> AbstractThreadLocalExample @enduml