Java消費(fèi)者遠(yuǎn)多于生產(chǎn)者時(shí)候,產(chǎn)生數(shù)組越界問(wèn)題?

科技 未結(jié) 0 1716

問(wèn)題描述

當(dāng)消費(fèi)者遠(yuǎn)多于生產(chǎn)者的時(shí)候,使用ReentrantLock會(huì)出現(xiàn)數(shù)組越界

使用Lock實(shí)現(xiàn)的

package xyz.hans.learning_java.pro_cu.lock;import xyz.hans.learning_java.pro_cu.common.IResource;import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;/*** Created by Hans on 16/10/22.*/ public class Resource implements IResource { private List<String> mRes; private static final int MAX = 20; private static final Lock mLock = new ReentrantLock(true); private static final Condition mEmptyCondition = mLock.newCondition(); private static final Condition mFullCondition = mLock.newCondition();public Resource() { mRes = new LinkedList<>(); } public String getRes() { mLock.lock(); if (mRes.size() <= 0) { //空倉(cāng)的事后 則獲取鎖并且等待 try { System.out.println("空倉(cāng)"); mEmptyCondition.await(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("獲取資源:" + mRes.get(0)); String res = mRes.remove(0); mFullCondition.signalAll(); mLock.unlock(); return res; }public void addRes(String res) { mLock.lock(); if (mRes.size() >= MAX) { try { System.out.println("爆倉(cāng)"); mFullCondition.await(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("添加資源:" + res); mRes.add(res); mEmptyCondition.signalAll(); mLock.unlock(); } }

測(cè)試代碼

Resource res = new Resource(); for (int i = 1; i < 3; i++) { new Productor("生產(chǎn)者:" + i, res).start(); } for (int i = 1; i < 200; i++) { new Customer("消費(fèi)者:" + i, res).start(); }

2個(gè)生產(chǎn)者線程199個(gè)消費(fèi)者線程

Console面板日志

生產(chǎn)者:1生產(chǎn)了0號(hào)資源 生產(chǎn)者:2生產(chǎn)了0號(hào)資源 添加資源:生產(chǎn)者:1的0號(hào)資源 生產(chǎn)者:1生產(chǎn)了1號(hào)資源 添加資源:生產(chǎn)者:2的0號(hào)資源 生產(chǎn)者:2生產(chǎn)了1號(hào)資源 添加資源:生產(chǎn)者:1的1號(hào)資源 生產(chǎn)者:1生產(chǎn)了2號(hào)資源 添加資源:生產(chǎn)者:2的1號(hào)資源 生產(chǎn)者:2生產(chǎn)了2號(hào)資源 添加資源:生產(chǎn)者:1的2號(hào)資源 生產(chǎn)者:1生產(chǎn)了3號(hào)資源 添加資源:生產(chǎn)者:2的2號(hào)資源 添加資源:生產(chǎn)者:1的3號(hào)資源 生產(chǎn)者:2生產(chǎn)了3號(hào)資源 生產(chǎn)者:1生產(chǎn)了4號(hào)資源 添加資源:生產(chǎn)者:2的3號(hào)資源 生產(chǎn)者:2生產(chǎn)了4號(hào)資源 添加資源:生產(chǎn)者:1的4號(hào)資源 生產(chǎn)者:1生產(chǎn)了5號(hào)資源 添加資源:生產(chǎn)者:2的4號(hào)資源 生產(chǎn)者:2生產(chǎn)了5號(hào)資源 添加資源:生產(chǎn)者:1的5號(hào)資源 生產(chǎn)者:1生產(chǎn)了6號(hào)資源 添加資源:生產(chǎn)者:2的5號(hào)資源 生產(chǎn)者:2生產(chǎn)了6號(hào)資源 添加資源:生產(chǎn)者:1的6號(hào)資源 生產(chǎn)者:1生產(chǎn)了7號(hào)資源 添加資源:生產(chǎn)者:2的6號(hào)資源 生產(chǎn)者:2生產(chǎn)了7號(hào)資源 添加資源:生產(chǎn)者:1的7號(hào)資源 生產(chǎn)者:1生產(chǎn)了8號(hào)資源 添加資源:生產(chǎn)者:2的7號(hào)資源 生產(chǎn)者:2生產(chǎn)了8號(hào)資源 添加資源:生產(chǎn)者:1的8號(hào)資源 生產(chǎn)者:1生產(chǎn)了9號(hào)資源 添加資源:生產(chǎn)者:2的8號(hào)資源 生產(chǎn)者:2生產(chǎn)了9號(hào)資源 獲取資源:生產(chǎn)者:1的0號(hào)資源 消費(fèi)者:1消費(fèi)者消耗資源:生產(chǎn)者:1的0號(hào)資源 添加資源:生產(chǎn)者:1的9號(hào)資源 生產(chǎn)者:1生產(chǎn)了10號(hào)資源 添加資源:生產(chǎn)者:2的9號(hào)資源 生產(chǎn)者:2生產(chǎn)了10號(hào)資源 獲取資源:生產(chǎn)者:2的0號(hào)資源 消費(fèi)者:2消費(fèi)者消耗資源:生產(chǎn)者:2的0號(hào)資源 添加資源:生產(chǎn)者:1的10號(hào)資源 生產(chǎn)者:1生產(chǎn)了11號(hào)資源 獲取資源:生產(chǎn)者:1的1號(hào)資源 消費(fèi)者:3消費(fèi)者消耗資源:生產(chǎn)者:1的1號(hào)資源 添加資源:生產(chǎn)者:2的10號(hào)資源 生產(chǎn)者:2生產(chǎn)了11號(hào)資源 獲取資源:生產(chǎn)者:2的1號(hào)資源 消費(fèi)者:4消費(fèi)者消耗資源:生產(chǎn)者:2的1號(hào)資源 添加資源:生產(chǎn)者:1的11號(hào)資源 生產(chǎn)者:1生產(chǎn)了12號(hào)資源 添加資源:生產(chǎn)者:2的11號(hào)資源 生產(chǎn)者:2生產(chǎn)了12號(hào)資源 獲取資源:生產(chǎn)者:1的2號(hào)資源 消費(fèi)者:5消費(fèi)者消耗資源:生產(chǎn)者:1的2號(hào)資源 獲取資源:生產(chǎn)者:2的2號(hào)資源 消費(fèi)者:6消費(fèi)者消耗資源:生產(chǎn)者:2的2號(hào)資源 添加資源:生產(chǎn)者:1的12號(hào)資源 生產(chǎn)者:1生產(chǎn)了13號(hào)資源 添加資源:生產(chǎn)者:2的12號(hào)資源 生產(chǎn)者:2生產(chǎn)了13號(hào)資源 獲取資源:生產(chǎn)者:1的3號(hào)資源 消費(fèi)者:7消費(fèi)者消耗資源:生產(chǎn)者:1的3號(hào)資源 獲取資源:生產(chǎn)者:2的3號(hào)資源 消費(fèi)者:8消費(fèi)者消耗資源:生產(chǎn)者:2的3號(hào)資源 添加資源:生產(chǎn)者:1的13號(hào)資源 生產(chǎn)者:1生產(chǎn)了14號(hào)資源 添加資源:生產(chǎn)者:2的13號(hào)資源 生產(chǎn)者:2生產(chǎn)了14號(hào)資源 獲取資源:生產(chǎn)者:1的4號(hào)資源 消費(fèi)者:9消費(fèi)者消耗資源:生產(chǎn)者:1的4號(hào)資源 獲取資源:生產(chǎn)者:2的4號(hào)資源 消費(fèi)者:10消費(fèi)者消耗資源:生產(chǎn)者:2的4號(hào)資源 添加資源:生產(chǎn)者:1的14號(hào)資源 生產(chǎn)者:1生產(chǎn)了15號(hào)資源 獲取資源:生產(chǎn)者:1的5號(hào)資源 消費(fèi)者:11消費(fèi)者消耗資源:生產(chǎn)者:1的5號(hào)資源 添加資源:生產(chǎn)者:2的14號(hào)資源 生產(chǎn)者:2生產(chǎn)了15號(hào)資源 獲取資源:生產(chǎn)者:2的5號(hào)資源 消費(fèi)者:12消費(fèi)者消耗資源:生產(chǎn)者:2的5號(hào)資源 獲取資源:生產(chǎn)者:1的6號(hào)資源 消費(fèi)者:13消費(fèi)者消耗資源:生產(chǎn)者:1的6號(hào)資源 添加資源:生產(chǎn)者:1的15號(hào)資源 生產(chǎn)者:1生產(chǎn)了16號(hào)資源 獲取資源:生產(chǎn)者:2的6號(hào)資源 消費(fèi)者:14消費(fèi)者消耗資源:生產(chǎn)者:2的6號(hào)資源 添加資源:生產(chǎn)者:2的15號(hào)資源 生產(chǎn)者:2生產(chǎn)了16號(hào)資源 獲取資源:生產(chǎn)者:1的7號(hào)資源 消費(fèi)者:15消費(fèi)者消耗資源:生產(chǎn)者:1的7號(hào)資源 添加資源:生產(chǎn)者:1的16號(hào)資源 生產(chǎn)者:1生產(chǎn)了17號(hào)資源 獲取資源:生產(chǎn)者:2的7號(hào)資源 消費(fèi)者:16消費(fèi)者消耗資源:生產(chǎn)者:2的7號(hào)資源 添加資源:生產(chǎn)者:2的16號(hào)資源 生產(chǎn)者:2生產(chǎn)了17號(hào)資源 獲取資源:生產(chǎn)者:1的8號(hào)資源 消費(fèi)者:17消費(fèi)者消耗資源:生產(chǎn)者:1的8號(hào)資源 添加資源:生產(chǎn)者:1的17號(hào)資源 生產(chǎn)者:1生產(chǎn)了18號(hào)資源 獲取資源:生產(chǎn)者:2的8號(hào)資源 消費(fèi)者:18消費(fèi)者消耗資源:生產(chǎn)者:2的8號(hào)資源 添加資源:生產(chǎn)者:2的17號(hào)資源 生產(chǎn)者:2生產(chǎn)了18號(hào)資源 獲取資源:生產(chǎn)者:1的9號(hào)資源 消費(fèi)者:19消費(fèi)者消耗資源:生產(chǎn)者:1的9號(hào)資源 添加資源:生產(chǎn)者:1的18號(hào)資源 生產(chǎn)者:1生產(chǎn)了19號(hào)資源 獲取資源:生產(chǎn)者:2的9號(hào)資源 消費(fèi)者:20消費(fèi)者消耗資源:生產(chǎn)者:2的9號(hào)資源 獲取資源:生產(chǎn)者:1的10號(hào)資源 消費(fèi)者:21消費(fèi)者消耗資源:生產(chǎn)者:1的10號(hào)資源 添加資源:生產(chǎn)者:2的18號(hào)資源 生產(chǎn)者:2生產(chǎn)了19號(hào)資源 獲取資源:生產(chǎn)者:2的10號(hào)資源 消費(fèi)者:22消費(fèi)者消耗資源:生產(chǎn)者:2的10號(hào)資源 獲取資源:生產(chǎn)者:1的11號(hào)資源 消費(fèi)者:23消費(fèi)者消耗資源:生產(chǎn)者:1的11號(hào)資源 添加資源:生產(chǎn)者:1的19號(hào)資源 生產(chǎn)者:1生產(chǎn)了20號(hào)資源 獲取資源:生產(chǎn)者:2的11號(hào)資源 消費(fèi)者:24消費(fèi)者消耗資源:生產(chǎn)者:2的11號(hào)資源 獲取資源:生產(chǎn)者:1的12號(hào)資源 消費(fèi)者:25消費(fèi)者消耗資源:生產(chǎn)者:1的12號(hào)資源 添加資源:生產(chǎn)者:2的19號(hào)資源 生產(chǎn)者:2生產(chǎn)了20號(hào)資源 獲取資源:生產(chǎn)者:2的12號(hào)資源 消費(fèi)者:26消費(fèi)者消耗資源:生產(chǎn)者:2的12號(hào)資源 獲取資源:生產(chǎn)者:1的13號(hào)資源 消費(fèi)者:27消費(fèi)者消耗資源:生產(chǎn)者:1的13號(hào)資源 獲取資源:生產(chǎn)者:2的13號(hào)資源 消費(fèi)者:28消費(fèi)者消耗資源:生產(chǎn)者:2的13號(hào)資源 添加資源:生產(chǎn)者:1的20號(hào)資源 生產(chǎn)者:1生產(chǎn)了21號(hào)資源 獲取資源:生產(chǎn)者:1的14號(hào)資源 消費(fèi)者:29消費(fèi)者消耗資源:生產(chǎn)者:1的14號(hào)資源 獲取資源:生產(chǎn)者:2的14號(hào)資源 消費(fèi)者:30消費(fèi)者消耗資源:生產(chǎn)者:2的14號(hào)資源 添加資源:生產(chǎn)者:2的20號(hào)資源 生產(chǎn)者:2生產(chǎn)了21號(hào)資源 獲取資源:生產(chǎn)者:1的15號(hào)資源 消費(fèi)者:31消費(fèi)者消耗資源:生產(chǎn)者:1的15號(hào)資源 獲取資源:生產(chǎn)者:2的15號(hào)資源 消費(fèi)者:32消費(fèi)者消耗資源:生產(chǎn)者:2的15號(hào)資源 獲取資源:生產(chǎn)者:1的16號(hào)資源 消費(fèi)者:33消費(fèi)者消耗資源:生產(chǎn)者:1的16號(hào)資源 獲取資源:生產(chǎn)者:2的16號(hào)資源 消費(fèi)者:34消費(fèi)者消耗資源:生產(chǎn)者:2的16號(hào)資源 添加資源:生產(chǎn)者:1的21號(hào)資源 生產(chǎn)者:1生產(chǎn)了22號(hào)資源 獲取資源:生產(chǎn)者:1的17號(hào)資源 消費(fèi)者:35消費(fèi)者消耗資源:生產(chǎn)者:1的17號(hào)資源 獲取資源:生產(chǎn)者:2的17號(hào)資源 消費(fèi)者:36消費(fèi)者消耗資源:生產(chǎn)者:2的17號(hào)資源 獲取資源:生產(chǎn)者:1的18號(hào)資源 消費(fèi)者:37消費(fèi)者消耗資源:生產(chǎn)者:1的18號(hào)資源 添加資源:生產(chǎn)者:2的21號(hào)資源 生產(chǎn)者:2生產(chǎn)了22號(hào)資源 獲取資源:生產(chǎn)者:2的18號(hào)資源 消費(fèi)者:38消費(fèi)者消耗資源:生產(chǎn)者:2的18號(hào)資源 獲取資源:生產(chǎn)者:1的19號(hào)資源 消費(fèi)者:39消費(fèi)者消耗資源:生產(chǎn)者:1的19號(hào)資源 獲取資源:生產(chǎn)者:2的19號(hào)資源 消費(fèi)者:40消費(fèi)者消耗資源:生產(chǎn)者:2的19號(hào)資源 獲取資源:生產(chǎn)者:1的20號(hào)資源 消費(fèi)者:41消費(fèi)者消耗資源:生產(chǎn)者:1的20號(hào)資源 獲取資源:生產(chǎn)者:2的20號(hào)資源 消費(fèi)者:42消費(fèi)者消耗資源:生產(chǎn)者:2的20號(hào)資源 添加資源:生產(chǎn)者:1的22號(hào)資源 生產(chǎn)者:1生產(chǎn)了23號(hào)資源 獲取資源:生產(chǎn)者:1的21號(hào)資源 消費(fèi)者:43消費(fèi)者消耗資源:生產(chǎn)者:1的21號(hào)資源 獲取資源:生產(chǎn)者:2的21號(hào)資源 消費(fèi)者:44消費(fèi)者消耗資源:生產(chǎn)者:2的21號(hào)資源 獲取資源:生產(chǎn)者:1的22號(hào)資源 消費(fèi)者:45消費(fèi)者消耗資源:生產(chǎn)者:1的22號(hào)資源 空倉(cāng) 空倉(cāng) 添加資源:生產(chǎn)者:2的22號(hào)資源 生產(chǎn)者:2生產(chǎn)了23號(hào)資源 獲取資源:生產(chǎn)者:2的22號(hào)資源 消費(fèi)者:48消費(fèi)者消耗資源:生產(chǎn)者:2的22號(hào)資源 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 添加資源:生產(chǎn)者:1的23號(hào)資源 生產(chǎn)者:1生產(chǎn)了24號(hào)資源 獲取資源:生產(chǎn)者:1的23號(hào)資源 消費(fèi)者:56消費(fèi)者消耗資源:生產(chǎn)者:1的23號(hào)資源 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) 空倉(cāng) Exception in thread "消費(fèi)者:46" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.LinkedList.checkElementIndex(LinkedList.java:553) at java.util.LinkedList.get(LinkedList.java:474) at xyz.hans.learning_java.pro_cu.lock.Resource.getRes(Resource.java:37)

請(qǐng)求幫助

為何在鎖的情況下還會(huì)產(chǎn)生這種問(wèn)題?

如何完美解決呢?

謝謝您的回復(fù)

相關(guān)標(biāo)簽:
回答
  • 消滅零回復(fù)
提交回復(fù)
最新問(wèn)題
檢查不孕項(xiàng)目費(fèi)用 1
長(zhǎng)虹中學(xué)2022年普高率 1
風(fēng)行電視卡在開(kāi)機(jī)畫面一直不動(dòng)了如何辦? 1
去醫(yī)院怎么檢查輸卵管堵 1
2021騏達(dá)音響什么牌子 1
海信crf6a16電視型號(hào) 1
有沒(méi)有能長(zhǎng)期穩(wěn)定除醛的好辦法?海信中央空調(diào)除醛效果理想嗎... 1
輸卵管堵塞可以治療得好嗎 1
星漢燦爛更新 1
星漢燦爛一周幾更新一次 1
猜你喜歡
西安哪個(gè)醫(yī)院做試管嬰兒,附醫(yī)院試管費(fèi)用!
現(xiàn)在做試管嬰兒要多少錢,求受孕價(jià)格表!
西安試管胚胎移植醫(yī)院排名!費(fèi)用詳細(xì)來(lái)了!
美國(guó)三代試管會(huì)導(dǎo)致基因突變嗎?來(lái)了解一下!
北京做三代試管嬰兒多少錢成功率多少
怎么預(yù)防胎盤前置?孕23周宮高多少正常?
青島三代試管醫(yī)院怎么選擇,推薦你去這里
上海試管機(jī)構(gòu)套餐費(fèi)用多少,費(fèi)用大概多少錢!
格魯吉亞三代試管嬰兒機(jī)構(gòu)做試管哪家好?格魯吉亞試管能報(bào)銷嗎
試管開(kāi)始都做什么檢查-試管開(kāi)始都做什么檢查呢
熱門文章
杭州不用結(jié)婚證做試管助孕的醫(yī)院排名一覽
國(guó)內(nèi)同性做試管嬰兒多少費(fèi)用?
2025年南昌比較大的正規(guī)助孕機(jī)構(gòu)名單出來(lái)了!
排名:結(jié)扎了能不能做試管嬰兒?
廣州三代試管比較好的私立醫(yī)院排名前三
2025廣東還有哪些私立機(jī)構(gòu)能做三代試管?請(qǐng)看排名
2025太原私立機(jī)構(gòu)三代試管成功率數(shù)據(jù)已出,聽(tīng)聽(tīng)醫(yī)生怎么解讀
泰國(guó)第三代試管嬰兒成功率高不高?
泰國(guó)三代試管嬰兒技術(shù)比國(guó)內(nèi)更好嗎?
在泰國(guó)做試管嬰兒成功率多高?
荊門私立機(jī)構(gòu)做三代試管價(jià)格參考,一個(gè)周期費(fèi)用6萬(wàn)夠嗎?
[基礎(chǔ)卵泡20個(gè)]基礎(chǔ)卵泡20個(gè)為什么只取三個(gè)卵
59歲試管成功的老太太
徐州比較好的試管私人醫(yī)院是哪一家,這份名單不要錯(cuò)過(guò)
【最新動(dòng)態(tài)】為什么糖耐這個(gè)檢查很不科學(xué)?糖耐量檢查是否一定要做?
去做泰國(guó)試管嬰兒哪家醫(yī)院權(quán)威
2024國(guó)內(nèi)懷孕費(fèi)用一覽,機(jī)構(gòu)3萬(wàn)夠嗎
馬來(lái)西亞做一次三代試管嬰兒通常**要取幾次,**次數(shù)多越容易成功嗎
女士子宮內(nèi)膜厚0.4cm正常嗎?影響做試管嬰兒?jiǎn)幔?/a>
排卵障礙怎樣恢復(fù)正常?3個(gè)方法教你恢復(fù)正常排卵功能
試管去濟(jì)南好還是北京好?附試管機(jī)構(gòu)費(fèi)用!
邵陽(yáng)是三代試管最權(quán)威的醫(yī)院排名更新。?費(fèi)用情況!
國(guó)家試管嬰兒周期是多久!可以報(bào)銷了嗎?
優(yōu)勢(shì)卵泡的標(biāo)準(zhǔn)是什么?附直徑大小參照表
呼和浩特試管三代醫(yī)院排名前十,附十大機(jī)構(gòu)排行!
廣告合作方 廣告申請(qǐng)