मुझे दो समांतर कंप्यूटेशंस चलाने की आवश्यकता है और दूसरा एक समाप्त होने पर पहले को बाधित करता है। का उपयोग कर Thread
रों स्पष्ट रूप से बिनास्कैला में एसिंक्रोनस कंप्यूटेशंस को कैसे बाधित करें?
/**
* Runs <var>sup</var> in parallel with <var>main</var>.
* Terminate (interrupt) it when <var>main</var> finishes.
*/
def support[R](sup: => Unit, main: => R): R = {
val supThread = new Thread {
override def run = { sup };
}
supThread.start();
try {
main;
} finally {
supThread.interrupt();
}
}
समान व्यवहार स्काला के समवर्ती पुस्तकालय का प्रयोग कर प्राप्त किया जा सकता है,: वर्तमान में, मैं इसे मानक जावा धागे का उपयोग कर क्रियान्वित किया है?
http://stackoverflow.com/questions/14449862/kill-or-timeout-a-future-in-scala -2-10/14450095 # 14450095 – sourcedelica
जावा के एपीआई के साथ आपका कार्यान्वयन विश्वसनीय नहीं है - बाधा हमेशा उम्मीद के अनुसार काम नहीं करती है और शायद इसका कभी भी उपयोग नहीं किया जाना चाहिए। प्रारंभिक समाप्ति के लिए स्पष्ट रूप से कोड करना बेहतर है - उदा। उपर्युक्त टिप्पणी में जुड़े उत्तर में। एक परमाणु Boolean साझा करना (कई) संभावित समाधानों में से एक है। –