मैं हाल ही में गो के गोरोइन को देख रहा हूं और सोचा है कि जावा में भी ऐसा ही होना अच्छा होगा। जहाँ तक मैंने एक विधि कॉल को समानांतर करने का सामान्य तरीका खोजा है वह कुछ ऐसा करना है:
final String x = "somethingelse";
new Thread(new Runnable() {
public void run() {
x.matches("something");
}
}).start();
बहुत सुरुचिपूर्ण नहीं है। क्या ऐसा करने का कोई बेहतर तरीका है? मुझे एक परियोजना में इस तरह के समाधान की आवश्यकता थी इसलिए मैंने एक async विधि कॉल के आसपास अपने स्वयं के रैपर वर्ग को लागू करने का निर्णय लिया।
मैंने जे-गो में अपना रैपर क्लास प्रकाशित किया । लेकिन मुझे नहीं पता कि यह एक अच्छा समाधान है या नहीं। उपयोग सरल है:
SampleClass obj = ...
FutureResult<Integer> res = ...
Go go = new Go(obj);
go.callLater(res, "intReturningMethod", 10); //10 is a Integer method parameter
//... Do something else
//...
System.out.println("Result: "+res.get()); //Blocks until intReturningMethod returns
या कम क्रिया:
Go.with(obj).callLater("myRandomMethod");
//... Go away
if (Go.lastResult().isReady()) //Blocks until myRandomMethod has ended
System.out.println("Method is finished!");
आंतरिक रूप से मैं एक वर्ग का उपयोग कर रहा हूं जो कि रननेबल को लागू करता है और सही विधि ऑब्जेक्ट प्राप्त करने और इसे लागू करने के लिए कुछ परावर्तन कार्य करता है।
मैं अपने छोटे पुस्तकालय के बारे में कुछ राय चाहता हूं और इस तरह से जावा में इस तरह से एस्क्लेप मेथड कॉल करता हूं। क्या ये सुरक्षित है? वहाँ पहले से ही एक सरल तरीका है?