मैं सूत्रण जो 1 20 करने के लिए से शुरू जब मैं मुख्य विधि वह निष्पादित सभी धागे के साथ यह परीक्षण किया संख्या के लिए टेबल उत्पन्न करता है के लिए एक सरल उदाहरण लिखा था के अंतर्गत बनाए (सभी संदेश प्रिंट) को क्रियान्वित नहीं, जबकि सभी धागे नहीं चल रहे हैं (सभी संदेशों को मुद्रित नहीं किया जा रहा है) अधिकांश समय (कभी-कभी यह सभी धागे चलाता है) जब जुनीट परीक्षण के साथ ऐसा करते हैं। मुझे लगता है कि उत्पादन के मामले में कोई अंतर नहीं होना चाहिए।JUnit परीक्षण सभी धागे परीक्षण
यहां मुख्य विधि के साथ वर्ग है:
public class Calculator implements Runnable {
private int number;
Calculator(final int number){
this.number = number;
}
@Override
public void run() {
for(int i = 1; i <= 10; i++){
System.out.printf("%s : %d * %d = %d \n", Thread.currentThread().getName(), number, i, number * i);
}
}
public static void main(String[] args){
Calculator calculator = null;
Thread thread = null;
for(int i = 1; i < 21; i ++){
calculator = new Calculator(i);
thread = new Thread(calculator);
System.out.println(thread.getName() + " Created");
thread.start();
System.out.println(thread.getName() + " Started");
}
}
}
जब मैं मुख्य विधि परिणाम ही सब कुछ प्रिंट आह्वान।
public class CalculatorTest {
private Calculator calculator;
private Thread thread;
@Test
public void testCalculator() {
for(int i = 1; i < 21; i ++){
calculator = new Calculator(i);
thread = new Thread(calculator);
System.out.println(thread.getName() + " Created");
thread.start();
System.out.println(thread.getName() + " Started");
}
}
}
जब मैं ऊपर परीक्षण का मामला चलाने के लिए, उत्पादन के व्यवहार दृश्य में संगत नहीं है कि कभी-कभी सभी संदेशों को प्रिंट:
Bellow मुख्य विधि को JUnit परीक्षण समकक्ष के लिए कोड है और ज्यादातर बार केवल कुछ ही प्रिंट करता है और बाहर निकलता है। यहाँ उत्पादन ऊपर JUnit परीक्षण मामले के मामले में कब्जा कर लिया है:
Thread-0 Created
Thread-0 Started
Thread-1 Created
Thread-1 Started
Thread-2 Created
Thread-2 Started
Thread-3 Created
Thread-3 Started
Thread-4 Created
Thread-4 Started
Thread-5 Created
Thread-5 Started
Thread-6 Created
Thread-6 Started
Thread-7 Created
Thread-7 Started
Thread-8 Created
Thread-8 Started
Thread-9 Created
Thread-9 Started
Thread-10 Created
Thread-10 Started
Thread-11 Created
Thread-11 Started
Thread-12 Created
Thread-12 Started
Thread-13 Created
Thread-13 Started
Thread-14 Created
Thread-14 Started
Thread-15 Created
Thread-15 Started
Thread-16 Created
Thread-16 Started
Thread-17 Created
Thread-17 Started
Thread-18 Created
Thread-18 Started
Thread-19 Created
Thread-19 Started
Thread-0 : 1 * 1 = 1
Thread-0 : 1 * 2 = 2
Thread-0 : 1 * 3 = 3
Thread-0 : 1 * 4 = 4
Thread-0 : 1 * 5 = 5
Thread-0 : 1 * 6 = 6
Thread-0 : 1 * 7 = 7
Thread-0 : 1 * 8 = 8
Thread-0 : 1 * 9 = 9
Thread-0 : 1 * 10 = 10
Thread-2 : 3 * 1 = 3
Thread-2 : 3 * 2 = 6
Thread-2 : 3 * 3 = 9
Thread-2 : 3 * 4 = 12
Thread-2 : 3 * 5 = 15
Thread-2 : 3 * 6 = 18
Thread-2 : 3 * 7 = 21
आउटपुट/अन्य धागे में शेष संदेशों मुद्रण अन्य थ्रेड को क्रियान्वित करने के बिना यहाँ समाप्त होती है।
किसी ने मुझसे इस के पीछे कारण को समझने के लिए मदद कर सकते हैं। अग्रिम में धन्यवाद। पहले सभी पैदा धागे पूरा कर लें
उत्तर के लिए धन्यवाद। मैं कोशिश करुंगा। –
ठीक है। मुझे तुम्हारा मुद्दा मिला लेकिन फिर भी मैं समझ नहीं पा रहा हूं कि क्यों मुख्य थ्रेड इसे पूरा करने/समाप्त करने के लिए शुरू किए गए सभी धागे के लिए इंतजार कर रहा है, जबकि साथ ही जुनीट टेस्ट थ्रेड इसे अनुमति नहीं दे रहा है। क्या आप इसे समझा सकते हैं। –
क्या आप पूछ रहे हैं कि गिनती नीचे कैसे काम करता है? या आप पूछ रहे हैं कि जब तक सभी धागे पूरा नहीं हो जाते हैं तब तक आपको ब्लॉक करने की आवश्यकता क्यों होती है? –