سؤال

أنا باستخدام الخيط غير المتزامن في طلبي مع httpclient. أقوم بإجراء مكالمة باستخدام واجهة برمجة التطبيقات المستقبلية مثل ذلك

mStrResults = (String) rssFuture.get();

تحاول هذه المكالمة استرداد سلسلة HTML التي تم إرجاعها من طريقة الاتصال HTTPClient القابلة للاتصال ().

ومع ذلك ، فإن ما أريد القيام به هو التأكد من أن طريقة GET لا تنتظر طويلاً أثناء تنفيذ طريقة الاتصال (). هل يجب أن أقوم بتمرير معلمة مهلة عند استدعاء rssfuture.get () أم أنه من المقبول فقط أن نحيط بكتابة مقبض المقاطع؟

هل هناك أيضًا وقت افتراضي ينتظره الخيط غير المتزامن قبل رمي مقاطع المقاطع وإذا كان الأمر كذلك ، فهل يمكنني تعيين قيمة مخصصة؟

هل كانت مفيدة؟

المحلول

يجب عليك تمرير معلمة مهلة عند الاتصال rssFuture.get() والقبض على المهلة. لن يحدث interruptedException إلا إذا كان الخيط الذي يقوم بتشغيل الخاص بك call يتم مقاطعة مع Thread.interrupt الطريقة أو إذا اتصلت cancel(true) الطريقة في المستقبل OBJ.

نصائح أخرى

يجب أن تستخدم المستقبل.احصل على (فترة طويلة ، وحدة الوقت), و catch timeoutexception. لا توجد مهلة افتراضية لـ GET () ، سوف تنتظر إلى الأبد.

لن يتم إلقاء InterruptedException ما لم يتم مقاطعة الخيط المستقبلي. get ().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top