में उपभोक्ता को निलंबित करें मेरे पास उत्पादक और उपभोक्ता BlockingQueue
से जुड़ा हुआ है।निर्माता/उपभोक्ता पैटर्न
कतार से उपभोक्ता प्रतीक्षा रिकॉर्ड और इसे संसाधित:
Record r = mQueue.take();
process(r);
मैं दूसरे धागे से थोड़ी देर के लिए इस प्रक्रिया को रोकने की आवश्यकता। इसे कैसे कार्यान्वित करें?
अब मैं इसे लागू इस तरह लगता है, लेकिन यह है बुरा समाधान की तरह दिखता है:
private Object mLock = new Object();
private boolean mLocked = false;
public void lock() {
mLocked = true;
}
public void unlock() {
mLocked = false;
mLock.notify();
}
public void run() {
....
Record r = mQueue.take();
if (mLocked) {
mLock.wait();
}
process(r);
}
क्या आप अपने विशिष्ट आवश्यकता पर थोड़ा अधिक संदर्भ प्रदान मन? कारण मैं पूछता हूं कि अगर मुझे वास्तव में श्रृंखला में किसी को रोकने की ज़रूरत है, तो मैं उपभोक्ता की बजाय निर्माता को रोक दूंगा। यह मूल रूप से रोकथाम के दौरान कतार क्षमता के बिना बढ़ने के समान प्रभाव प्राप्त करता है। – sstan