سؤال

لا يمكنني العثور على أي شيء مكافئ للإشارة في مرجع Blackberry Java.ماذا ينقصني؟Java.util.concurrent ليس موجودًا حتى.

شكرًا!شون

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

المحلول

وحتى لمن يأتي عبر هذه، coldice "الجواب ممتازة تقودني إلى هذه الصفحة، وهو ما يفسر كيفية تنفيذ أنواع مختلفة من أعمدة الإشارة باستخدام الانتظار / إعلام البدائيون المتاحة في J2ME <لأ href =" HTTP: // الدروس. jenkov.com/java-concurrency/semaphores.html "يختلط =" نوفولو noreferrer "> http://tutorials.jenkov.com/java-concurrency/semaphores.html . شكرا!

نصائح أخرى

من استخدام الخيوط في تطبيقات J2ME بواسطة Eric Giguere :

تحتفظ الشاشة بقائمة انتظار من الخيوط المنتظرة، مما يسمح لخيط واحد فقط في كل مرة بالدخول إلى الكتلة.

نظرًا لأن كل كائن Java يمكن أن يعمل كشاشة، فإن فئة java.lang.Object تحدد ثلاث طرق تعرض هذه الوظيفة الأساسية:انتظر () وإخطار () وإخطار الكل ().يمكن لأي مؤشر ترابط تعليق نفسه عن طريق استدعاء طريقة الانتظار () الخاصة بالكائن:

...
Object obj = .... // some object to use as a lock

synchronized( obj ){
    // here is where you'd check obj's state

    try {
    obj.wait();
    }
    catch( InterruptedException e ){
    }
}
...

يجب أن يقوم مؤشر الترابط بقفل الكائن قبل استدعاء طريقة الانتظار () الخاصة به.يجب عليه أيضًا التقاط java.lang.InterruptedException والتعامل بشكل مناسب مع انقطاعات سلسلة الرسائل.يقوم الخيط بتحرير قفله ضمنيًا على الكائن بعد تعليق نفسه.

تم تحميل طريقة الانتظار () بشكل زائد:يمكن للخيط تحديد مهلة اختيارية بالمللي ثانية إذا كان لا يريد الانتظار إلى أجل غير مسمى.

بمجرد قيام مؤشر ترابط بتعليق نفسه، يقوم مؤشر ترابط آخر بتحريره عن طريق استدعاء طريقة notify() أو notifyAll() لنفس الكائن:

...
Object obj = .... // same object used as lock!

synchronized( obj ){
    obj.notify();  // or notifyAll
}
...

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

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