النوم الخيط حتى حدث ما حضر في موضوع آخر
-
02-07-2019 - |
سؤال
لدي اثنين من المواضيع في تطبيق الروبوت ، واحد هو عرض الموضوع, و الأخرى هي عامل الموضوع.ما أريد أن أفعله هو النوم عامل الموضوع حتى يتم عرض الموضوع إنهاء التعامل مع onDraw الأسلوب.
كيف يمكنني فعل هذا ؟ هل هناك أي تنتظر إشارة أو شيء ما ؟
المحلول
حصة جافا.لانغ.الكائن بين المواضيع ، هدفها الوحيد هو إخبار ترابط عندما تتمكن من مواصلة عملها.كلما ترابط تصل إلى نقطة حيث يجب أن النوم ولا هذا:
stick.wait();
عندما عرض موضوع انتهاء onDraw العمل ، فإنه يدعو هذا:
stick.notify();
ملاحظة شرط أن عرض موضوع تمتلك الشاشة على الكائن.في حالتك هذه يجب أن تكون بسيطة إلى حد ما إلى فرض صغيرة مزامنة كتلة:
void onDraw() {
...
synchronized (stick) {
stick.notify();
}
} // end onDraw()
استشارة جافادوك جافا.لانغ.الكائن على هذه الطرق (و notifyAll ، فقط في حالة) ؛ أنها مكتوبة بشكل جيد.
نصائح أخرى
إذا كنت تريد أعلى مستوى concurreny API (مع أشياء مثل الحواجز) ، هل يمكن أن محاولة backport جافا 5 التزامن API الذي يعمل على جافا 1.3 وما فوق ، و قد تعمل على الروبوت.أمثال من وجوه.انتظر/يخطر العمل ، ولكن يمكن أن يكون قليلا مقتضب.