日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...

發布時間:2023/12/19 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[Java教程]【JAVA并發編程實戰】12、使用condition實現多線程下的有界緩存先進先出隊列

0 2016-11-29 17:00:10 package cn.study.concurrency.ch14;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 使用condition作為掛起線程的信號 * 這個是先進先出的隊列 * @author xiaof * * @param */public class ConditionBoundedBuffer { protected final Lock lock = new ReentrantLock(); //數據隊列長度 private static final int BUFFER_SIZE = 1024; //建立兩個condition,一個代表不為空,一個代表不滿 private final Condition notFull = lock.newCondition(); private final Condition notEmpty = lock.newCondition(); private final T[] items = (T[]) new Object[BUFFER_SIZE]; private int tail, head, count; public void put(T x) throws InterruptedException { lock.lock();//這里在進行操作的時候上鎖 try { while(count == items.length) { //如果是滿的就掛起線程,等待變為notFull notFull.await(); } items[tail] = x; //判斷是否是已經達到了滿隊列的情況 if(++tail == items.length) tail = 0; //計數值++ ++count; //插入數據,隊列肯定不是空的,那么進行非空信號發布 notEmpty.signal(); } finally{ //執行完畢,切記一定要解鎖 lock.unlock(); } } //獲取數據,阻塞直到隊列中有數據為止 public T take() throws InterruptedException { lock.lock();//進行操作之前,先上鎖 try { while(count == 0) { //如果隊列中沒有數據,那么就要進行現場掛起 notEmpty.await(); } //得到數據,用來返回 T t = items[head]; items[head] = null;//吧輸出出去的數據設為空 if(++head == items.length) head = 0; //重置隊里索引 --count; //計數減一 notFull.signal();//喚醒插入操作,因為獲取出去一個數據,那么隊列就一定有空位 return t; } finally { //切記在執行完畢之后,不論成功與否,都要解鎖 lock.unlock(); } } }

本文網址:http://www.shaoqun.com/a/266899.html

*特別聲明:以上內容來自于網絡收集,著作權屬原作者所有,如有侵權,請聯系我們:admin@shaoqun.com。

JAVA

0

總結

以上是生活随笔為你收集整理的java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。