Ich habe eine Sammlung (concurrentHashMap
) und ein Verfahren, das in einem separaten Thread und das Rück numOfApples
funktionieren soll:Wie gibt man einen Wert von einem Lambda-Ausdruck zurück?
public int getApples(String treeNum) {
int numOfApples = null;
Runnable task =() -> {concurrentHashMap.get(treeNum).getApples(); };
new Thread(task).start() ;
return numOfApples;
}
Ist es möglich, passieren num von Äpfeln aus Lambda-Ausdruck (concurrentHashMap.get(treeNum).getApples()
) an die numOfApples
Variable?
Aber wenn das OP darauf bestehen, ist es möglich, eine ['FutureTask'] zu erstellen (http://docs.oracle.com/javase/con/docs/api/?java/util/concurrent/FutureTask.html)) Übergeben Sie es manuell an einen neuen manuell erzeugten Thread, starten Sie es und rufen Sie danach 'get' auf. Das Prinzip ist das gleiche wie in Ihrer Antwort. – Holger
Tunaki, wie überprüft man, ob diese Methode in einem separaten Thread ausgeführt wird? – May12
Um zu überprüfen, ob die Methode in einem separaten Thread ausgeführt wird, können Sie etwas wie 'System.out.println (" Thread: "+ Thread.currentThread(). GetId());' in der Methode 'getApples()' tun im 'Callable'. Die ID-Werte sind nicht identisch. –