JAVA中怎么使用Lock和Condition手写阻塞队列
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关JAVA中怎么使用Lock和Condition手写阻塞队列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。package c
千家信息网最后更新 2026年11月03日JAVA中怎么使用Lock和Condition手写阻塞队列
今天就跟大家聊聊有关JAVA中怎么使用Lock和Condition手写阻塞队列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
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("准备存数据了"); blockingQueueClass.put(value); System.out.println("已经存好数据了"); } } }); thread.start(); Thread thread2 = new Thread(new Runnable() { @Override public void run() { while(true){ System.out.println("准备取数据了"); Object value = blockingQueueClass.take(); System.out.println("取到的数据为:" + 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; } }}看完上述内容,你们对JAVA中怎么使用Lock和Condition手写阻塞队列有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
数据
内容
队列
阻塞
准备
更多
知识
篇文章
行业
资讯
资讯频道
频道
进一
支持
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州为想互联网科技有限公司
云之行互联网科技
江苏根荣互联网科技
今日互联网科技
互联网科技财经
杭州互联网科技公司
北京互联网络科技有限公司
时间互联网络科技
万达互联网科技
互联网科技公司有哪些
互联网前沿科技
天扬科技互联网广告
云创客互联网科技公司
栖莱科技互联网股份有限公司
湖北码尼互联网科技有限公司电话
互联网科技研发水平
996高科技互联网公司
保险科技服务互联网营销体系
2021世界互联网领先科技成果发布
西安有哪些互联网高科技企业
互联网科技巨头监管
互联网 科技服务平台
顺网科技2021年互联网排名
温州喔噻互联网科技有限公司
小米互联网科技园设置
赶超互联网科技 微信多开
洛阳昕诺飞互联网科技有限公司
高科技互联网套路
广州富喜互联网络科技
陕西云淼互联网科技公司