Tôi có một bộ sưu tập (concurrentHashMap
) và một phương pháp mà phải làm việc trong một thread riêng biệt và trở numOfApples
:Cách trả về một giá trị từ biểu thức lambda?
public int getApples(String treeNum) {
int numOfApples = null;
Runnable task =() -> {concurrentHashMap.get(treeNum).getApples(); };
new Thread(task).start() ;
return numOfApples;
}
Có thể vượt qua num táo từ biểu thức lambda (concurrentHashMap.get(treeNum).getApples()
) vào biến numOfApples
?
Nhưng nếu OP nhấn mạnh vào nó, có thể tạo ['FutureTask'] (http://docs.oracle.com/javase/8/docs/api/?java/util/concurrent/FutureTask.html) bằng tay, chuyển nó tới một chuỗi mới được tạo thủ công, khởi động nó và gọi 'get' sau đó. Nguyên tắc cũng giống như trong câu trả lời của bạn. – Holger
Tunaki, làm cách nào để kiểm tra phương thức đó thực hiện trong chuỗi riêng biệt? – May12
Để kiểm tra xem phương thức có thực thi trong một luồng riêng biệt hay không, bạn có thể làm một cái gì đó như 'System.out.println (" Thread: "+ Thread.currentThread(). GetId());' trong phương thức 'getApples()' và trong 'Có thể gọi'. Các giá trị ID sẽ không giống nhau. –