عندما تقوم بتنفيذ الواجهة Runnable بدلاً من تمديد الفئة Thread، يجب عليك تغيير الطريقة التي تقوم فيها بإنشاء وتشغيل الخيوط. بدلاً من إنشاء مثيل من الفئة Processor مباشرة وتمريره إلى مثيل Thread، يجب عليك إنشاء مثيل Thread وتمريره مع مثيل من الفئة Processor التي تنفذ Runnable.
هذا يعني أن الكود يجب أن يبدو كالتالي عند استخدام Runnable:
-
كيفية الوصول إلى عنصر name في كائن JSON06/03/2024
-
استخدام مصفوفة Perl في سيناريو bash11/03/2024
javapublic class Processor implements Runnable {
private boolean running = true;
public void run() {
while (running) {
System.out.println("Hello there!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void shutDown() {
running = false;
}
}
public class ProcessorDemo {
public static void main(String[] args) {
Processor processor = new Processor();
Thread proc1 = new Thread(processor);
proc1.start();
System.out.println("Press return to stop");
Scanner sc = new Scanner(System.in);
sc.nextLine();
processor.shutDown();
}
}
بهذه الطريقة، يمكنك استخدام الطريقتين (تنفيذ Runnable وتمديد Thread) لإنشاء الخيوط بنجاح، ولكن يجب أن تتأكد من تعديل الكود بشكل مناسب لتتناسب مع الطريقة التي تستخدمها.
المزيد من المعلومات
عند استخدام الواجهة Runnable، يمكنك فصل مهمة التنفيذ عن الفئة Thread، مما يتيح لك إمكانية استخدام نفس الكود في عدة أماكن بدون الحاجة لإعادة كتابته. بالإضافة إلى ذلك، يمكنك تمديد الفئة بالفعل (Processor) بدلاً من تمديد Thread، مما يتيح لك استخدام تقنيات التمديد بشكل أكثر مرونة.
بالنسبة للخيوط، يفضل استخدام تنفيذ Runnable عندما تحتاج إلى تحكم أكبر في طريقة تشغيل الخيط أو عندما تحتاج إلى إعادة استخدام الكود بسهولة. من ناحية أخرى، يمكنك استخدام تمديد Thread عندما تريد توسيع سلوك الخيط نفسه، على سبيل المثال، عندما تحتاج إلى تعديل أو استبدال طريقة run().
بشكل عام، من المستحسن استخدام تنفيذ Runnable كوسيلة أولى لإنشاء الخيوط، ما لم تكن بحاجة إلى التحكم الدقيق في سلوك الخيط نفسه.