आप नहीं करना चाहते हैं:
यहाँ एक (सरल) उदाहरण है कॉल करने योग्य ऑब्जेक्ट्स का उपयोग करने के लिए समाधान को स्वैप करने के लिए आप कतारों का भी उपयोग कर सकते हैं और परिणाम को थ्रेड से वापस कर सकते हैं।
मैं इस तरह अपने उदाहरण फिर से लिखा है:
import java.util.PriorityQueue;
import java.util.Queue;
public class GetResultFromThread {
public static void main(String[] args) throws Exception {
Queue<String> queue = new PriorityQueue<String>();
int expectedResults = 2;
for (int i = 0; i < expectedResults; i++) {
new Example(queue).start();
}
int receivedResults = 0;
while (receivedResults < expectedResults) {
if (!queue.isEmpty()) {
System.out.println(queue.poll());
receivedResults++;
}
Thread.sleep(1000);
}
}
}
class Example extends Thread {
private final Queue<String> results;
public Example(Queue<String> results) {
this.results = results;
}
@Override
public void run() {
results.add("result from thread");
}
}
ध्यान दें कि आप तुल्यकालन और संगामिति के बारे में सोच जायेगा!
यह 'th.start()' होना चाहिए। और आप धागे से मूल्य वापस करने के तरीकों में से एक को लागू करते हैं। –