ما هو الفرق بين غير متزامن ومتزامن في جافا؟


الاجابه 1:

ينفذ كود جافا سطرا سطرا. لنفترض إذا كنت تقرأ مجموعة من الملفات الكبيرة التي تحتوي على تفاصيل امتحان للمدارس في الولاية بأكملها ، حيث يحتوي ملف واحد على بيانات لنتائج امتحان إحدى المدارس.

علاوة على ذلك ، ترغب في فرز سجلات الطلاب حسب إجمالي العلامات في الفصل وعرضها على واجهة المستخدم. إذا كتبت هذا كرمز java عادي (أي بدون ترابط متعدد) ، فسيتم تنفيذ كل سطر واحد تلو الآخر. لا يمكنك معالجة ملف آخر إذا لم تتم معالجة ملف واحد بعد. إذا كنت ترغب في القيام بأي عملية موازية على سبيل المثال: إنشاء اتصال DB ، لا يمكنك القيام به ، لأنه لن يحدث إلا بعد الانتهاء من معالجة الملف. يمكن أن يسمى هذا السلوك المتسلسل بأنه سلوك متزامن.

يمكنك الآن قراءة مجموعة فرعية من الملفات ومعالجتها جيدًا دون مقاطعة معالجة الملفات الأخرى عن طريق تنفيذ المهام بشكل متكافئ (يُعرف أيضًا باسم مؤشرات الترابط). وتسمى هذه الظاهرة باسم "تعدد مؤشرات الترابط". يمكن إخطار المتصل (الشخص الذي يحتاج إلى نتيجة) عند اكتمال المعالجة ويمكن بعد ذلك استخدام النتيجة لإجراء مزيد من المعالجة. لذلك ، فإن التنفيذ الذي يحدث بشكل مستقل ، دون مقاطعة التدفق العادي للتنفيذ يسمى استدعاء غير متزامن.

هناك عدة طرق يمكنك من خلالها إجراء مكالمات غير متزامنة في Java وفقًا لمتطلباتك. (لكن مقاربتهم جيدًا أمر بالغ الأهمية وصعب في بعض الأحيان.)

بالإضافة إلى واجهة Runnable (التي تُستخدم لتنفيذ المهام فقط ولكنها لا تُرجع أي شيء إلى المتصل) ، يمكنك قراءة واجهة Callable والكائنات المستقبلية في java. (والتي يمكن أن ترجع البيانات إلى المتصل)

هذا المقتطف من مدونة أوراكل

باستخدام Callable لإرجاع النتائج من Runnables


الاجابه 2:

غير متزامن مقابل التنفيذ المتزامن

قد يبدو الفرق بين التنفيذ المتزامن وغير المتزامن مربكا بعض الشيء في البداية. عادةً ما يكون تنفيذ البرنامج في معظم اللغات عالية المستوى أمرًا سهلاً للغاية. يبدأ البرنامج في السطر الأول من التعليمات البرمجية المصدر ويتم تنفيذ كل سطر من التعليمات البرمجية بالتسلسل بعد ذلك. سهل بما فيه الكفاية.

تنفيذ البرنامج المتزامن يشبه إلى حد ما ما ورد أعلاه. يتم تنفيذ البرنامج الخاص بك سطرا ، سطر واحد في وقت واحد. في كل مرة يتم استدعاء وظيفة ، ينتظر تنفيذ البرنامج حتى ترجع هذه الوظيفة قبل المتابعة إلى السطر التالي من التعليمات البرمجية.

يمكن أن يكون لهذه الطريقة من التنفيذ تداعيات غير مرغوب فيها. افترض أن وظيفة تسمى لبدء عملية تستغرق وقتا طويلا. ماذا لو كنت تريد إيقاف العملية الطويلة؟ من خلال التنفيذ المتزامن ، يكون البرنامج "عالقًا" ، في انتظار انتهاء العملية ، دون أي مخرج.

التنفيذ غير المتزامن يتجنب هذا الاختناق. أنت تقول أساسًا ، "أعرف أن استدعاء الوظيفة هذا سيستغرق وقتًا كبيرًا ، لكن برنامجي لا يريد الانتظار حتى يتم تنفيذه".

لمزيد من التفاصيل ، اقرأ المدونات أدناه ،

http: //learn4sfdc.blogspot.in/20 ...

http: //www.bisque.com/help/ccdso ...

هذا قد يكون مفيدا لك ..!