سؤال

لدي اثنين من المواضيع في تطبيق الروبوت ، واحد هو عرض الموضوع, و الأخرى هي عامل الموضوع.ما أريد أن أفعله هو النوم عامل الموضوع حتى يتم عرض الموضوع إنهاء التعامل مع onDraw الأسلوب.

كيف يمكنني فعل هذا ؟ هل هناك أي تنتظر إشارة أو شيء ما ؟

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

المحلول

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

stick.wait();

عندما عرض موضوع انتهاء onDraw العمل ، فإنه يدعو هذا:

stick.notify();

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

void onDraw() {
  ...
  synchronized (stick) {
    stick.notify();
  }
} // end onDraw()

استشارة جافادوك جافا.لانغ.الكائن على هذه الطرق (و notifyAll ، فقط في حالة) ؛ أنها مكتوبة بشكل جيد.

نصائح أخرى

إذا كنت تريد أعلى مستوى concurreny API (مع أشياء مثل الحواجز) ، هل يمكن أن محاولة backport جافا 5 التزامن API الذي يعمل على جافا 1.3 وما فوق ، و قد تعمل على الروبوت.أمثال من وجوه.انتظر/يخطر العمل ، ولكن يمكن أن يكون قليلا مقتضب.

Backport-util-المتزامنة

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