اینترفیس Future در جاوا چیست؟

+2 رأی
میانگین بازدید روزانه 0.18198 بازدید
در java.util.concurent  یک اینترفیس به نام Future وجود دارد .

لطفا کمی در مورد آن توضیح دهید
سوال 2 سال قبل در تالار برنامه نویسی توسط moeenzarrinfam (2,569 امتیاز)
ویرایش 2 سال قبل توسط Saeed Zarinfam

1 جواب

+3 رأی
 
بهترین جواب

Future<T> درواقع یک اشاره گر به شئی از جنس T است که در حال حاضر موجود نیست (برای مثال محاسبه آن تمام نشده است). مثل کلید یک ماشین می ماند که هنوز ساخته نشده. 

استفاده از مفاهیمی مثل Future و Promise بعنوان pattern ثابت شده در برنامه نویسی concurent به سبک asynchronous و Non-blocking در بسیاری از زبان های برنامه نویسی و فریم ورک ها مرسوم است. در جاوا هم اینترفیس Future برای همین سبک برنامه نویسی طراحی شده است. التبه بدلیل مشکلات طراحی که اینترفیس Future داست، CompletableFuture در جاوا 8 معرفی شد. در این سبک برنامه نویسی concurent، متد ها بجای block کردن فرآیند اجرا برنامه در زمان برگرداندن شئ، Future ی از آن شئ بر می گردانند.

private static final ExecutorService pool = Executors.newFixedThreadPool(10);
 
public static Future<String> startComputation() throws IOException {
    return pool.submit(new Callable<String>() {
        @Override
        public String call() throws Exception {
            Thread.currentThread().sleep(3000);
            return "finish computation";
        }
    });
}
 
public static void main(String[] args) throws IOException, InterruptedException, ExecutionException {
    final Future<String> contentsFuture = startComputation();
     
    while (!contentsFuture.isDone()) {
        System.out.println("computation in progress...");
        System.out.println("do another work");
        Thread.currentThread().sleep(1000);
    }
     
    System.out.println(contentsFuture.get());
     
    System.exit(0);
}

در مثال بالا، متد startComputation برای محاسبه مقدار String بازگشتی نیاز به زمان نامشخص دارد برای همین بجای نوع String، نوع Future<String> بر می گرداند تا برنامه block نشود.

جواب 2 سال قبل توسط Saeed Zarinfam (639 امتیاز)
انتخاب شده در 2 سال قبل توسط moeenzarrinfam

سوال های مشابه

+1 رأی
1 جواب میانگین بازدید روزانه 0.13192 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.0878 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.58267 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.21210 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.12121 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.18221 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.21416 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.63505 بازدید
کانال تلگرام جواب یاب
...