لقد رأيت مؤخرًا سؤالًا مع الكود على النحو التالي:
نسخة الكود كما يلي:
الفراغ الثابت العام (سلسلة args []) {
الموضوع t = new thread () {
تشغيل الفراغ العام () {
pong () ؛
}
} ؛
T.Run () ؛
System.out.println ("ping") ؛
}
بونغ بونغ () {باطل ثابت
system.out.println ("pong") ؛
}
سؤال ، ما الذي سيتم إخراج النتيجة؟
ركضت عدة مرات ، واتضح أن بونغ بينغ. في وقت لاحق ، اكتشفت أخيرًا النقطة الرئيسية ، كائن مؤشر الترابط T ، الذي لا يستدعي طريقة START () ، ولكن طريقة RUN (). في وقت لاحق ، فتحت تصحيح تصحيح وضع نقطة الإيقاف ووجدت أنه عندما أسميت طريقة Run () ، كان هناك سلسلة واحدة فقط في البرنامج بأكمله. عندها فقط يمكننا التنافس مع مؤشر الترابط الرئيسي لوحدة المعالجة المركزية ، وقد تكون هناك نتائج متعددة ، ولكن نظرًا لأن طريقة الإخراج التالية يتم تنفيذها بسرعة ، فهي في الأساس إخراج "Ping Pong".
لذا فإن الفرق بين Run () و START () هو:
Run () هي طريقة محددة في الواجهة القابلة للتشغيل ، والتي تتمثل في السماح لمبرمجي العملاء بكتابة التعليمات البرمجية الوظيفية الخاصة بهم في هذه الطريقة. لا يوجد فرق بين الاتصال مباشرة والاتصال بأساليب الأعضاء الخاصة بك من خلال الفصول العادية.
START () هي علامة يبدأ تشغيل الخيط.
لذلك أعتقد أنه إذا كنت ترغب في كتابة مؤشر ترابط منفصل ، فمن الأفضل أن ترث مؤشر ترابط. .