Get the App
SLTechnology News&Howtos  ›  Development  › 

Sample code for the ConcurrentLinkedQueue of the java collection

Shulou Source: shulou.com Published: 2022-06-02 11:37:36 10月26日 Update

This article shares with you the content of the sample code for the ConcurrentLinkedQueue of the java collection. The editor thinks it is very practical, so share it with you as a reference and follow the editor to have a look.

problem

(1) is ConcurrentLinkedQueue a blocking queue?

(2) how does ConcurrentLinkedQueue ensure concurrency security?

(3) can ConcurrentLinkedQueue be used in thread pools?

Brief introduction

ConcurrentLinkedQueue implements only the Queue interface, not the BlockingQueue interface, so it is not a blocking queue and cannot be used in thread pools, but it is thread-safe and can be used in multithreaded environments.

So, how is its thread safety achieved? Let's have a look together.

Source code analysis main attribute / / chain header node private transient volatile Node head;// chain list tail node private transient volatile Node tail

There are only two main attributes, a header node and a tail node.

Main inner class private static class Node {volatile E item; volatile Node next;}

Typical single linked list structure, very pure.

The main construction method public ConcurrentLinkedQueue () {/ initialize the header and tail node head = tail = new Node (null);} public ConcurrentLinkedQueue (Collection)

Tags: Node update success thread queue element method blocking security two branch tail try code change example content atom only attributes Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Shulou Information Shulou Technology vpn Apple Linux