1. حدد فئة ترث فئة Thread، وتتجاوز طريقة التشغيل في الفصل، وتستدعي طريقة البدء لكائن الفئة، وتبدأ طريقة البدء الخيط، وتستدعي طريقة التشغيل. يتم استخدام فئة Thread لوصف سلاسل الرسائل؛ وتحدد هذه الفئة تشغيل الوظيفة، والتي تُستخدم لتخزين التعليمات البرمجية التي سيتم تشغيلها بواسطة مؤشر الترابط.
2. حدد فئة لتنفيذ الواجهة القابلة للتشغيل، وتجاوز الأساليب في الواجهة القابلة للتشغيل، وإنشاء كائن مؤشر ترابط من خلال فئة الموضوع، وتمرير كائن الفئة الفرعية للواجهة القابلة للتشغيل كمعلمة فعلية إلى مُنشئ فئة الموضوع، واستدعاء سيتم استدعاء طريقة البدء لفئة الخيط لبدء الخيط.
طريقة تنفيذ الواجهة Runnable تتجنب القيود الناجمة عن الميراث الفردي؛
الموضوع T؛
T.setMaemon(true);// قم بتعيين الخيط كخيط في الخلفية؛
T.notify();// استيقظ هذا الموضوع؛
T.notifyAll();// تنبيه جميع المواضيع;
T.interrupt();// مقاطعة الموضوع;
Thread.sleep(100);// إيقاف الخيط مؤقتًا لمدة 100 مللي ثانية
متزامن: يتم قفله بشكل افتراضي، ويمكن أيضًا قفل الكائنات المخصصة؛
يجب أن يكون هناك خيطان أو أكثر قيد التنفيذ. تستخدم سلاسل العمليات المتعددة نفس القفل. ويجب التأكد من تشغيل مؤشر ترابط واحد فقط أثناء عملية المزامنة؛
تحديد المزامنة: توضيح الرموز التي تتطلب تشغيل متعدد الخيوط، وتوضيح البيانات المشتركة، وتوضيح البيانات الموجودة في كود التشغيل متعدد الخيوط التي تعمل على البيانات المشتركة؛
تطبق تذاكر الفئة Runnable
{
علامة int الخاصة = 100؛
تشغيل الفراغ العام () {// تشغيل الفراغ العام المتزامن ()
بينما (ضع علامة > 0) {
متزامن (هذا) {
إذا (ضع علامة > 0) {
يحاول {
Thread.sleep(100);
} قبض على (InterruptedException e) {
printStackTrace();
}
System.out.println(this.toString() + "sale:" + Tick--);
}
}
}
}
كما هو مذكور أعلاه: علامات التجزئة هي بيانات مشتركة، تحتاج إلى تشغيل الأقفال المتزامنة.
آلية انتظار التنبيه: عند تشغيل سلاسل المزامنة، يجب تحديد الأقفال التي تحتفظ بها الخيوط التي تعمل عليها، فقط يمكن إيقاظ الخيوط المنتظرة على نفس القفل عن طريق الإخطار على نفس القفل (أي: الانتظار والاستيقاظ يجب أن يكونا نفس القفل)