First page Back Continue Last page Overview Graphics
Multithreading 3
Nové vlastnosti Java 1.5
- Problémy JMM < 1.5 (synchronizace, volatile – reordering)
- ReentrantLock, ReentrantReadWriteLock
- Lock – lock, unlock, tryLock, (readLock, writeLock)
- Condition – await, signal, signalAll
- ReentrantLock x synchronized
- Libovolný počet podmínek narozdíl od synchronized (wait, notify, notifyAll)
- Lze nastavit timeout pro získání zámku
- Více kódu, přehlednost – nepotřebuji-li jeho vlastnosti stačí použít synchronized
- BlockingQueue (producer/consumer pattern) // ThreadQueue.java
- vkládání/vyzvednutí – s vyjímkou, true/null, blokující
- Linked, Array (fair), Priority, DelayQueue (Delayed interface)
- Concurrent Collections
- ConcurrentLinkedQueue, ConcurrentHashMap, CopyOnWriteAr.L/S.
- Neuzamykají celou kolekci – rychlejší, iterátory validní po modifikaci
- Callable – “Runnable” s návratovou hodnotou
- FutureTask – Callable -> Runnable s přítupem k výsledku
- Executors – thread pool, Synchronizers – Semaph. Barrier, .