JAVA中怎么使用Lock和Condition手写阻塞队列
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,今天就跟大家聊聊有关JAVA中怎么使用Lock和Condition手写阻塞队列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。package c
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
计算机网络技术教程第四版
上海个人软件开发税收
网络安全信息课程介绍
嵩明综合软件开发咨询报价
网络服务器上网是接管理口
全国做网络安全
安卓连接数据库安全问题
通信与网络技术书籍
科技 互联网 大会 李安
徐州暑假网络安全课堂下载
服务器网络安全机制
高中网络技术应用思维导图
网易我的世界最强大陆服务器
软件开发行业前端设计
客运站网络安全自查报告
查询wincc历史数据库
可以自己架设云服务器吗
怎么搜索泰拉瑞亚国际服服务器ip
学软件开发和软件设计怎么样
vb如何判断数据库写入正常
删除数据库后台怎么查
phpmywind数据库
提单数据库
数字1000的国内数据库
网络安全基础有什么用
Capital IQ数据库价格
青岛串口服务器
云服务器如何搭建vpn
铜陵在线教育平台软件开发费用
开票软件服务器地址