2012-04-01 12 views
5

क्या यह अच्छा ओओ डिज़ाइन यह मानते हुए कि आप प्रत्येक विरासत वर्ग को एक अनंत थ्रेड बनना चाहते हैं? समान काम करने का कोई बेहतर/अधिक सुरुचिपूर्ण तरीका?क्या यह स्वीकार्य ओओ डिजाइन

public abstract class Base implements Runnable { 

protected abstract void doSomething(); 

public void run() { 

    while (true) { 
     Thread.sleep(1000); 
     doSomething(); 
    } 
} 
} 

उत्तर

11

आप केवल doSomething हर दूसरे निष्पादित करने के लिए चाहते हैं, आप काम का अपना Runnable करने के लिए एक ScheduledExecutorService साथ ले जाएँ और schedule यह कर सकता है। इस तरह आप अपने कार्यक्रम में धागे की संख्या को कम कर सकते हैं और संसाधनों को बचा सकते हैं।

+0

शेड्यूलविथफिक्स्डडेले, विशेष रूप से – James