Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

How to use Lock and Condition handwritten blocking queues in JAVA

Shulou Source: shulou.com Published: 2022-06-02 11:08:12 09月17日 Update

Today, I will talk to you about how to use Lock and Condition handwritten blocking queues in JAVA. Many people may not know much about it. In order to make you understand better, the editor has summarized the following for you. I hope you can get something from this article.

Package com.study;import java.util.Random;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class BlockingQueueDemo {public static void main (String [] args) {BlockingQueueDemo blockingQueueDemo = new BlockingQueueDemo (); final BlockingQueueClass blockingQueueClass = blockingQueueDemo.new BlockingQueueClass () Thread thread = new Thread (new Runnable () {@ Override public void run () {while (true) {int value = new Random () .nextInt (); System.out.println ("ready to save data"); blockingQueueClass.put (value); System.out.println ("already stored data");}); thread.start () Thread thread2 = new Thread (new Runnable () {@ Override public void run () {while (true) {System.out.println ("ready to fetch data"); Object value = blockingQueueClass.take (); System.out.println ("data fetched is:" + value);}); thread2.start () } class BlockingQueueClass {Lock lock = new ReentrantLock (); Condition notFullCondition = lock.newCondition (); Condition notEmptyCondition = lock.newCondition (); Object [] items = new Object [100]; private int putLength,takeLength,count; public void put (Object object) {lock.lock (); try {while (count = = items.length) {try {notFullCondition.await () } catch (InterruptedException error) {error.printStackTrace ();}} items [putLength] = object; if (+ + putLength = = items.length) {putLength = 0;} + + count; notEmptyCondition.signal ();} catch (Exception e) {e.printStackTrace ();} finally {lock.unlock () }} public Object take () {Object object = new Object (); lock.lock (); try {while (count = = 0) {try {notEmptyCondition.await ();} catch (InterruptedException e) {e.printStackTrace ();}} object = items [takeLength] If (+ + takeLength = = items.length) {takeLength = 0;}-- count; notFullCondition.signal ();} catch (Exception e) {e.printStackTrace (); lock.unlock ();} return object;} after reading the above, do you have any further understanding of how to use Lock and Condition handwritten blocking queues in JAVA? If you want to know more knowledge or related content, please follow the industry information channel, thank you for your support.

Tags: Data content queue blocking preparation more knowledge articles industry information information channels channels enter one support related Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker MySQL Huawei Shulou Technology Redmi