ثلاث طرق لتنفيذ متعدد الخيوط في جافا
في Java ، هناك ثلاث طرق لتنفيذ متعدد الخيوط. الطريقة الأولى: ورث فئة الخيط وتجاوز وظيفة التشغيل. الطريقة الثانية: قم بتنفيذ الواجهة القابلة للتشغيل وإعادة كتابة وظيفة التشغيل. الطريقة الثالثة: تنفيذ الواجهة القابلة للاتصال وتجاوز وظيفة المكالمة. ستشرح هذه المقالة كيف يمكن تنفيذ هذه الطرق الثلاثة من خلال أمثلة. إذا كنت في حاجة إليها ، يرجى الرجوع إليها.
(1) ورث فئة الخيط وتجاوز وظيفة التشغيل.
يمتد الفئة XX مؤشر الترابط {public void run () {thread.sleep (1000) // ينام مؤشر الترابط لمدة 1000 مللي ثانية ، ويؤدي النوم إلى دخول الخيط إلى حالة الكتلة وإطلاق موارد}}} بدء الموضوع:
كائن
(2) تنفيذ واجهة Runnable ، الرمز كما يلي
الفئة myThread تنفذ runnable {private string name ؛ public mythread (اسم السلسلة) {super () ؛ this.name = name ؛ } Override public void run () {for (int i = 0 ؛ i <200 ؛ i ++) {system.out.println ("thread"+name+"--->"+i) ؛ }}} الفئة العامة threaddemo {public static void main (string [] args) {mythread a = new myThread ("a") ؛ mythread b = new mythread ("b") ؛ mythread c = new MyThread ("C") ؛ موضوع جديد (أ) .start () ؛ موضوع جديد (ب) .start () ؛ موضوع جديد (ج) .start () ؛ }}(3) تنفيذ الواجهة القابلة للاتصال وإعادة كتابة وظيفة المكالمة
Callable هو واجهة مماثلة ل rawnable. الفئات التي تنفذ الواجهة القابلة للاتصال والفئات التي تنفذ Runnable هي المهام التي يمكن تنفيذها بواسطة مؤشرات ترابط أخرى.
هناك العديد من الاختلافات بين Callable و Runnable:
مثال رمز جافا القابل للاتصال:
الفئة TaskWithResult تنفذ قابلة للاتصال <string> {private int id ؛ TaskWithResult (int id) {this.id = id ؛ } Override Public String Call () يلقي الاستثناء {return "نتيجة TaskWithResult" + ID ؛ }} الفئة العامة callableTest {public static void main (string [] args) remrows interruptedException ، executionException {executorService exec = Executors.NewCacheDthreadPool () ؛ ArrayList <future <string> results = new ArrayList <future <string> () ؛ // المستقبل يعادل حاوية تستخدم لتخزين نتائج تنفيذ المنفذ لـ (int i = 0 ؛ i <10 ؛ i ++) {results.add (exec.submit (TaskWithresult (i))) ؛ } لـ (المستقبل <string> fs: النتائج) {if (fs.isdone ()) {system.out.println (fs.get ()) ؛ } آخر {system.out.println ("النتيجة المستقبلية لم تكتمل بعد") ؛ }} exec.shutdown () ؛ }}شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!