मैं एक धागा ही काम करने के लिए जब एक निश्चित परिस्थिति में आता है कि है नहीं तो यह सिर्फ एक खाली अनंत लूप से अधिक दोहराता:।जावा अनंत लूप प्रदर्शन
public void run() {
while(true) {
if(ball != null) {
// do some Calculations
}
}
}
यह जब पाश लेकिन वास्तव में ऐसा प्रदर्शन को प्रभावित करता है कुछ भी नहीं, लेकिन यह जांचना है कि क्या इसे प्रत्येक पुनरावृत्ति की गणना करना है या नहीं? केवल आवश्यक होने पर यह थ्रेड बनाना मेरे लिए एक विकल्प नहीं है, क्योंकि मेरी कक्षा जो रननेबल लागू करती है वह एक दृश्य वस्तु है जो हर समय दिखाया जा सकता है।
संपादित करें: तो क्या यह एक अच्छा समाधान है? या यह एक अलग विधि (प्रदर्शन से संबंधित) का उपयोग करना बेहतर है?
private final Object standBy = new Object();
public void run() {
while(true) {
synchronized (standBy) {
while(ball != null) // should I use while or if here?
try{ standBy.wait() }
catch (InterruptedException ie) {}
}
if(ball != null) {
// do some Calculations
}
}
public void handleCollision(Ball b) {
// some more code..
ball = b;
synchronized (standBy) {
standBy.notify();
}
}
'ब्लॉकिंग क्यूयू' का उपयोग करें; यह अनंत लूप आपके सभी सीपीयू समय खाएगा। – twentylemon
कोई परिस्थिति नहीं है जिसमें यह धागा काम नहीं करता है। यह हमेशा काम कर रहा है। –
क्या आपके कंप्यूटर में एक अतिरिक्त प्रोसेसर है? यदि आपके पास पर्याप्त प्रोसेसर हैं, तो लगातार चलने योग्य धागा सस्ता है। यदि नहीं, तो यह आपको खर्च करता है। –