द्वारा अधिसूचित किए जाने तक मैं बहु-थ्रेडिंग के लिए नया हूं और जब मैं बहु थ्रेडिंग के बारे में पढ़ रहा हूं, तो निम्नलिखित करने के लिए इस फैंसी मल्टी-थ्रेडिंग कोड को लिखने का विचार।thread1 से कैसे प्रतीक्षा करें थ्रेड 2
मेरी काउंटर क्लास निम्नानुसार है।
class Counter {
private int c = 0;
public void increment() {
System.out.println("increment value: "+c);
c++;
}
public void decrement() {
c--;
System.out.println("decrement value: "+c);
}
public int value() {
return c;
}
}
यह काउंटर ऑब्जेक्ट दो धागे के बीच साझा किया जाता है। एक बार थ्रेड शुरू हो जाने के बाद, मुझे निम्न कार्य करने की आवश्यकता है। मैं थ्रेड 2 को तब तक प्रतीक्षा करना चाहता हूं जब तक थ्रेड 1 काउंटर ऑब्जेक्ट की गिनती को 1 द्वारा बढ़ाए जाने के बाद, थ्रेड 1 थ्रेड 2 को सूचित करता है और फिर थ्रेड 1 थ्रेड 2 के लिए 1/ द्वारा मूल्य मान के लिए प्रतीक्षा करना शुरू करता है तो थ्रेड 2 शुरू होता है और घटता है 1 तक और थ्रेड 1 को फिर से सूचित करता है और फिर थ्रेड 2 थ्रेड 1 के लिए प्रतीक्षा करना शुरू कर देता है। इस प्रक्रिया को कुछ बार दोहराएं।
मैं इसे कैसे प्राप्त कर सकता हूं। अग्रिम में बहुत धन्यवाद।
मैंने निम्नलिखित किया है।
public class ConcurrencyExample {
private static Counter counter;
private static DecrementCount t1;
private static IncrementCount t2;
public static void main(String[] args) {
Counter counter = new Counter();
Thread t1 = new Thread(new IncrementCount(counter));
t1.start();
Thread t2 = new Thread(new DecrementCount(counter));
t2.start();
}
}
public class DecrementCount implements Runnable {
private static Counter counter;
public DecrementCount(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
counter.decrement();
System.out.println("decreamented");
}
}
}
public class IncrementCount implements Runnable {
private static Counter counter;
public IncrementCount(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
counter.increment();
System.out.println("Incremented");
}
}
}
काउंटरडाउन देखें: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html – davidmontoyago
'वृद्धि काउंटर' को 'increment()' कॉल करना चाहिए, है ना? –
ऐसा करने का सबसे आसान तरीका एक थ्रेड का उपयोग करना होगा। मेरा सुझाव है कि आप उन उदाहरणों पर विचार करें जहां एकाधिक धागे का उपयोग करना अधिक जटिल और धीमी गति से अधिक तेज़ होगा। –