Còn giải pháp này thì sao?
Nó không sử dụng lớp Thread, nhưng đó là đồng thời, và trong một cách thức mà 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ả các bạn làm là nói value.get()
bất cứ khi nào bạn cần phải lấy giá trị trả về của bạn , chủ đề được bắt đầu ngay sau khi bạn cung cấp cho value
một giá trị để bạn không bao giờ phải nói threadName.start()
trên đó.
Thật là một Future
là, là một lời hứa cho 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()
vào nó trước khi nó được thực hiện , chủ đề đang gọi nó sẽ chỉ đơn giản là đợi cho đến khi hoàn thành
Nguồn
2013-12-28 21:11:41
Ngôn ngữ này là gì? –
Nếu chủ đề chính phải đợi cho đến khi bộ xử lý kết thúc trước khi trở về từ phương pháp, tại sao lại sử dụng một bộ xử lý ở vị trí đầu tiên? –
@JBNizet Tôi không bao gồm sự phức tạp của những gì Chủ đề thực sự làm. Nó nhận được tọa độ gps vì vậy có tôi cần một chủ đề. – Neeta