Làm thế nào về giải pháp này?
Nó không sử dụng lớp Thread, nhưng nó đồng thời và theo một cách nào đó nó thực hiện chính xác những gì bạn yêu cầu
ExecutorService pool = Executors.newFixedThreadPool(2); // creates a pool of threads for the Future to draw from
Future<Integer> value = pool.submit(new Callable<Integer>() {
@Override
public Integer call() {return 2;}
});
Bây giờ tất cả những gì bạn làm là nói value.get()
bất cứ khi nào bạn cần lấy giá trị trả về của mình, chuỗi được bắt đầu ngay giây phút bạn đưa ra value
giá trị nên bạn không bao giờ phải nóithreadName.start()
về nó.
A Future
là gì , là một lời hứa đối với chương trình, bạn hứa chương trình mà bạn sẽ nhận được nó giá trị nó cần lúc nào đó trong tương lai gần
Nếu bạn gọi .get()
nó trước khi hoàn tất, chuỗi đang gọi nó sẽ chỉ đợi cho đến khi nó hoàn tất