मुझे जावा पर Thread.sleep()
के साथ एक अजीब त्रुटि है। किसी कारण से, जब मैं कुछ मशीनों पर नींद कहता हूं, तो यह कभी वापस नहीं आता है। मैं यह नहीं समझ सकता कि इस व्यवहार के कारण क्या हो सकता है। सबसे पहले, मैं thgouth त्रुटि कहीं और मेरी कोड में हो सकता है, तो मैं सबसे सरल संभव नींद परीक्षण किया:Thread.sleep() कभी वापस
public class SleepTest {
public static void main (String [] args) {
System.out.println ("Before sleep...");
try {
Thread.sleep (100);
} catch (InterruptedException e) {
}
System.out.println ("After sleep...");
}
}
सबसे मशीनों पर यह काम करता है, लेकिन कई मशीनों जो मैं दूर से में प्रवेश करने कर रहा हूँ, यह अनिश्चित काल के लिए रुक जाता है प्रिंट स्टेटमेंट के बीच। मैंने व्यवहार में कोई बदलाव नहीं होने के साथ आधे घंटे तक इंतजार किया है। मशीनें जो इस त्रुटि को प्रदर्शित कर रही हैं वे लिनक्स मशीन हैं। मशीनों के बारे में कुछ जानकारी यहां दी गई है:
$ uname -a
Linux zone29ea 2.6.32-220.17.1.el6.x86_64 #1 SMP Tue May 15 17:16:46 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux
$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
इस व्यवहार के कारण क्या हो सकता है?
अद्यतन
संशोधित संस्करण है, जो अभी भी कभी नहीं समाप्त होता है:
public class SleepTest {
public static void main (String [] args) {
new Thread() {
public void run() {
System.out.println ("Before sleep...");
try {
Thread.sleep (100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println ("After sleep...");
}
}.start();
}
}
आप अगर वहाँ अपनी पकड़ के अंदर निकाल दिया गलती से हुआ है की जाँच की थी तय? शायद एक प्रिंटस्टैकट्रेस? –
क्या आप यह सुनिश्चित करने के लिए एक अलग थ्रेड में कोशिश कर सकते हैं कि अभी भी ऐसा होता है? आप जो कर रहे हैं वह मुख्य धागे को सोने के लिए डालने वाला है जो –
समस्या का कारण बन सकता है क्या आप सुनिश्चित हैं कि समस्या दूसरी println के पुनर्भुगतान में नहीं है (जैसा कि आप इसे दूरस्थ रूप से करते हैं)? शायद एक लापता फ्लश? 'थ्रेड.sleep (100); 'लिनक्स पर भी काम करता है। –