على منصة Java ، فإن الأدوار التي تنفذ المكالمات غير المتزامنة لها الأدوار الثلاثة التالية: البيانات الحقيقية للمتصل في فاتورة الشحن
عندما يتصل المتصل بالتشغيل المستهلك للوقت ولا يمكنه إرجاع البيانات على الفور ، سيعيد أولاً مشروع قانون الشحن.
انتقل إلى متجر الكيك لشراء الكعك ، لا تحتاج إلى انتظار صنع الكعكة (على افتراض أن الأمر يستغرق وقتًا طويلاً لجعلها) ، تحتاج فقط إلى الحصول على فاتورة شحن (اذهب لفعل شيء آخر) .
الطبقة العامة {public static void Main (args) {system.out.println ("Main Begin") ؛ Data2 = extrice.request (B ') ؛ catch (interruptedException e) {} system.out.println ("otherjob end") ؛ Data2 .getContent () ؛
إن الفصل الرئيسي هنا يعادل "العميل" ، والمضيف يعادل "متجر الكعك". يعادل التقاط البضائع. بعد فترة من الزمن (بعد النوم لفترة من الوقت) ، اتصل بـ Data1.getContent () ، مما يعني الحصول على فاتورة الشحن للحصول على نتيجة التنفيذ.
دعونا نلقي نظرة على ما فعله متجر الكيك بعد أن أمر العميل بالكعكة:
مضيف الفئة العامة {طلب البيانات العامة (عدد int النهائي ، char c) {system.out.println ("request (" + count + "،" + c + ") begin") ؛ الكيان النهائي Futuredata المستقبل = جديد Futuredata () ؛ الطبقة الداخلية. RealData RealData = count ، c) ؛ // (3) استرجاع كيان Futuredata كقيمة الإرجاع مستقبل ؛
بعد تلقي الطلب ، أصبح المضيف ("متجر الكيك" مثالًا على "كتاب الشحن" ، ثم أمر "صانع الكيك" بتصنيع الكعكة. . ثم ما يعوده المضيف إلى العميل هو مجرد مستقبل "كتاب الشحن" ، وليس الكعكة. بعد الانتهاء من الكعكة ، يمكن لصانع الكيك أن يعطي كعكة "كتاب الشحن" المقابلة ، أي المستقبل.
دعونا نلقي نظرة على كيفية تصنيع صانع الكيك:
إنشاء سلسلة تحتوي على أحرف C العد.
الطبقة العامة تنفذ البيانات {Private Final String Content ؛ char new [count] ؛ .
الآن دعونا نلقي نظرة على كيفية توافق مستقبل "فاتورة الشحن" مع "محتوى" الكعكة:
الطبقة العامة تنفذ البيانات {private realdata realdata = null ؛ } this.realdata = realdata ؛ () ؛
بعد أن ينتهي العميل من عمله الخاص ، سيأخذ "كتاب الشحن" الخاص به لالتقاط الكعكة:
system.out.println ("data1 =" + data1.getContent ()) ؛
إذا لم تكن الكعكة جاهزة ، فيجب عليك الانتظار:
بينما (! جاهز) {try {wait () ؛
تحليل البرنامج
لكل طلب ، سيقوم المضيف بإنشاء موضوع ، وهو مسؤول عن إنشاء "الكعكة" التي يحتاجها العميل. بعد الانتظار لفترة من الوقت ، إذا لم تكن الكعكة جاهزة ، يجب على العملاء الانتظار. يمكن للعميل أن يسلب الكعكة إلا حتى يتم تنفيذ "الكعكة" ، أي مستقبل.
كل موضوع مسؤول فقط عن صنع "الكعكة" التي يحتاجها عميل معين. وهذا هو ، العميل أ يتوافق مع Cake Master A ، والعميل B يتوافق مع Cake Master B. حتى إذا كانت كعكة العميل B جاهزة أولاً ، فيمكن للعميل A الانتظار فقط حتى Cake Master A لإعداد الكعكة. بمعنى آخر ، لا توجد علاقة تنافسية بين العملاء.
تم ضبط طريقتين من Futuredata على المزامنة. يهم ما إذا كانت الكعكة جاهزة.
هذا في هذا المقال.