تشبه الواجهة القابلة للتطبيق Runnable ، والتي يمكن رؤيتها من الاسم ، لكن Runnable لن تُرجع النتيجة ولا يمكنها إرجاع النتيجة. يمكن أن تحصل على قيمة الإرجاع هذه حسب المستقبل ، أي المستقبل يمكن أن تحصل على قيمة غير متزامنة للمهام.
نسخة الكود كما يلي:
حزمة com.future.test ؛
استيراد java.io.filenotfoundException ؛
استيراد java.io.ioException ؛
استيراد java.util.concurrent.callable ؛
استيراد java.util.concurrent.executionException ؛
استيراد java.util.concurrent.executorservice ؛
استيراد java.util.concurrent.executors ؛
استيراد java.util.concurrent.futureTask ؛
استيراد java.util.concurrent.timeunit ؛
استيراد java.util.concurrent.timeoutexception ؛
الطبقة العامة mytest {
// تلقي الاستثناء الذي تم اكتشافه في طريقة التشغيل ، ثم تطرح الطريقة المخصصة الاستثناء
// استثناء ثابت قابل للاستراحة ؛
/**
* param args
*/
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
// TODO METHOTION METTOD COBS
نتيجة السلسلة = "" ؛
ExecutorService Executor = Executors.NewSingLethReadExecutor () ؛
FutureTask <String> Future =
جديد FutureTask <String> (New Callable <String> () {// استخدم الواجهة القابلة للاتصال كمعلمة مُنشأة
استدعاء السلسلة العامة () {
// يتم تنفيذ المهمة الحقيقية هنا ، نوع قيمة الإرجاع هنا هو سلسلة ، والتي يمكن أن تكون من أي نوع
يحاول {
thread.sleep (10000) ؛
} catch (InterruptedException e) {
// TODO AUTO CATCH BLOCK
// استثناء = هـ ؛
//e.printstacktrace () ؛
}
العودة "11111" ؛
}}) ؛
Executor.execute (المستقبل) ؛
// يمكنك فعل أي شيء آخر هنا
يحاول {
النتيجة = Future.get (5000 ، timeunit.milliseconds) ؛ يمكنك أيضًا استخدام Future.get () للحصول على نتائج دون تعيين مهلة التنفيذ.
} catch (InterruptedException e) {
//system.out.println تم إلغاء "Task") ؛
Future.cancel (True) ؛
} catch (ExecutionException e) {
Future.cancel (True) ؛
} catch (timeoutexception e) {
Future.cancel (True) ؛
} أخيراً {
Executor.Shutdown () ؛
}
System.out.println ("النتيجة:"+نتيجة) ؛
}
/* public void throwexception () يلقي FileNotfoundException ، ioException {
إذا (مثيل استثناء من FileNotfoundException)
رمي (FileNotfoundException) استثناء ؛
إذا (استثناء مثيل من ioException)
رمي (ioException) استثناء ؛
}*/
}