Nuance of Java development

This blog is about Java development and describes in detail the most important topics.

Posts with tag «multithreading»


SynchronousQueue VS TransferQueue

One addition in Java 7 is an interface TransferQueue in addition already exists from Java 5 SynchronousQueue. What is the reason of new interface?

Firstly about TransferQueue Java 7 included new interface TransferQueue and corresponded implementation LinkedTransferQueue. TransferQueue extends BlockingQueue which extends Queue interface, added in Java 5. BlockingQueue is a queue, which can block Producer threads during adding items into a full queue and Consumer threads, during removing from an empty queue. Main idea of blocking queues is to cope with flood of data, which can not be processed by system for appropriate time. TransferQueue goes further, and blocks Producer threads until the items consumed by Consumer threads. New method — transfer — blocking occurs until item moves from one thread to another. There are additional methods — two forms of tryTransfer — one is blocking with time-out, other is non-blocking but transfer only if Consumer thread is waiting. Also there are a couple helper methods hasWaitingConsumer and getWaitingConsumerCount. Couple words about SynchronousQueue We remember about SynchronousQueue from Java 5, which provides queue with size 0 and quite good for transfer items between threads. This queue works on the principle «one came in — one went out». Each put operation blocks Producer thread until Read more


How to use ConcurrentHashMap in Java

Before Java 1.5, if you need Map implementation, which can be safely used in multithreading Java-application, you have only Hashtable or synchronized Map, because HashMap is NOT safe.

Introduction ConcurrentHashMap was presented as alternative to Hashtable in Java 1.5 as part of concurrency package. With ConcurrentHashMap, you have a better choice not only if it can be safely used in the concurrent multi-threaded environment but also provides better performance than Hashtable and synchronizedMap. ConcurrentHashMap performs better because it locks a part of Map. It allows concurred read operations and the same time maintains integrity by synchronizing write operations. In this article we will know: How ConcurrentHashMap is implemented in Java. Some important properties of ConcurrentHashMap. When to use ConcurrentHashMap. How ConcurrentHashMap is implemented ConcurrentHashMap was developed as alternative of Hashtable and support all functionality of Hashtable with additional ability, so called concurrency level. ConcurrentHashMap allows multiple readers to read simultaneously without using blocks. It becomes possible by separating Map to different parts and blocking only part of Map in updates. By default, concurrency level is 16, so Map is spitted to 16 parts and each part is managed by separated block. It means, that 16 threads can work with Map simultaneous Read more

March 29, 2019