क्योंकि एक टाइमर है एक background thread that continues running:
प्रत्येक टाइमर वस्तु के अनुरूप एक भी पृष्ठभूमि थ्रेड है टाइमर के कार्यों के सभी निष्पादित करने के लिए, क्रमिक रूप से प्रयोग किया जाता है। टाइमर कार्य जल्दी से पूरा करना चाहिए। यदि टाइमर कार्य को पूरा करने में अत्यधिक समय लगता है, यह टाइमर का कार्य निष्पादन धागा "hogs" करता है। इसके बदले में, बाद के कार्यों के निष्पादन में देरी हो सकती है, जो तेजी से उत्तराधिकार में ("अगर) अपमानजनक कार्य अंततः पूरा हो सकता है तो" गुच्छा "और निष्पादित हो सकता है।
चूंकि यह पृष्ठभूमि धागा है, यह तब तक जारी रहता है जब तक कि JVM बाहर निकलता है या यह बंद हो जाता है।
अद्यतन: इस पर थोड़ा और। एक "पृष्ठभूमि धागा" एक डेमॉन थ्रेड जैसा ही है - बीएसडी डिमन प्रक्रिया के साथ समानता द्वारा नामित। आप Thread पर javadocs देखते हैं, तो आपको:
मार्क्स इस सूत्र या तो एक डेमॉन धागा या एक उपयोगकर्ता के रूप में धागा। जावा वर्चुअल मशीन निकलती है जब केवल चलने वाले थ्रेड सभी डिमन धागे हैं।
जब आपका मुख्य टर्मिनेट होता है, तो सभी उपयोगकर्ता थ्रेड बंद हो जाते हैं, केवल डेमॉन थ्रेड छोड़ते हैं। JVM तब बंद हो जाता है। एक अच्छे समय के लिए - यदि मुख्य से Thread.currentThread().setDaemon(true);
छोटा - कॉल करें।
अद्यतन: एएके। मेरे पास लगभग सही था। आपको टाइमर को निर्माण समय पर एक डिमन बनाना होगा। (यह परिवर्तन किया था, या मैं सिर्फ एक मस्तिष्क विफलता है?)
वैसे भी, यहाँ उदाहरण कोड है: अगर यह चले जाओ किया
import java.util.*;
class Chatter extends TimerTask {
public void run(){
System.err.println("Timer run.");
}
}
public class TryThread {
public static void main(String[] argv){
// If argument is true, only runs a few times.
Timer t = new Timer(false);
t.schedule(new Chatter(), 1L, 1L);
return ;
}
}
स्रोत
2009-04-20 17:57:07
नहीं यह भयानक होगा? यह लगभग सभी बहु-कार्य को और अधिक कठिन बना देगा। –