khaled0mohammed نشر 13 يناير 2022 أرسل تقرير نشر 13 يناير 2022 كيف اوقف thread في جافا؟ شرح عن طريقة seelp() 1 اقتباس
0 qusayabomal3aqa نشر 13 يناير 2022 أرسل تقرير نشر 13 يناير 2022 يمكننا إيقاف thread باستخدام ثلاث طرق : Sleeping Waiting Blocked sleep تستخدم لتأخير تنفيذ thread لبعض الوقت فقط. مثال: Thread. Sleep (2000) // ياخير الثريد 2 ملي من الثاينة public class ExampleThread implements Runnable{ public static void main (String[] args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } } هذا مثال بسيط يوضح لك استخدام الدالة sleep اقتباس
0 Ali Haidar Ahmad نشر 17 يناير 2022 أرسل تقرير نشر 17 يناير 2022 في حال كنت تتعامل مع الكلاس Thread، فيمكنك استخدام الدالة ()stop، حيث تقوم هذه الدالة بإنهاء تنفيذ الخيط (Thread) الذي قام باستدعائها. مثال: public class JavaStopExp extends Thread { public void run() { for(int i=0; i<4; i++) { try { // إيقاف الخيط لمدة 100 ميلي ثانية sleep(100); // طباعة اسم الخيط الحالي System.out.println(Thread.currentThread().getName()); }catch(InterruptedException e){System.out.println(e);} // التقاط الاستثناء في حال تم رميه System.out.println(i); } } public static void main(String args[]) { // إنشاء الخيط Ex th=new Ex (); // تشغيل الخيط th.start(); // إيقافه th.stop(); System.out.println("Thread th is stopped"); } } ملاحظات: هذه الدالة لاتُعيد أي قيمة. هذه الدالة تمتلك وسيط واحد (اختياري): public final void stop(Throwable obj) حيث أن obj يمثل الكائن القابل للرمي (Throwable) المراد رميه. هذه الدالة ترمي الاستثناء SecurityException إذا كان الخيط الحالي لايمكنه تعديل الخيط. بعد إيقاف الخيط لايمكنك إعادة تشغيله من خلال الدالة start. في حال كنت تستخدم الواجهة Runable فهنا يمكنك استخدام الدالة interrupt، كما يلي: يمكن استخدام الدالة interrupt لإيقاف أو استئناف تنفيذ الخيط من خيط آخر. على سبيل المثال، تُقاطع التعليمة التالية الخيط t1 من الخيط الحالي: t1.interrupt(); في حال كان t1 في حالة إيقاف مؤقت (sleeping)، فإن الاستدعاء السابق سيؤدي إلى رمي الاستثناء InterruptedException. وبالتالي اعتماداً على ماسنكتبه داخل الكتلة catch يمكننا إيقاف الخيط أو جعله يستمر في التنفيذ. مثال: public class Ex implements Runnable { public void run() { for (int i = 0; i <= 9; i++) { System.out.println("m" + i); try { Thread.sleep(1500); continue; } catch (InterruptedException ex) { System.out.println("continue"); } } } public static void main(String[] args) { // إنشاء الخيط Thread t1 = new Thread(new Ex()); // تشغيله t1.start(); try { // إيقاف الخيط لمدة 4000 ميلي ثانية Thread.sleep(4000); // استدعاء دالىة المقاطعة t1.interrupt(); } catch (InterruptedException ex) { //معالجة الاستثناء // لاتقم بأي شيئ } } } في المثال السابق يقوم الخيط t1 بطباعة رسالة كل 1500 ميلي ثانية، بينما خيط الدالة الرئيسية main يقوم بمقاطعته بعد 400 ميلي ثانية. يمكنك أيضاً أن تلاحظ أنه في جملة try..catch في الدالة run، يتم متابعة تنفيذ الحلقة بعد أن تتم مقاطعة النيسب، وهذا يعني أن الخيط يستمر تشغيله بينما هو في حالة الإيقاف المؤقت (sleeping). الآن لو أردنا بدلاً من ذلك أن يتم إيقاف الخيط، فكل ماعلينا فعله هو تعديل جملة try..catch في الدالة run، كما يلي: try { Thread.sleep(1500); } catch (InterruptedException ex) { System.out.println("stop"); return; // فقط return نقوم بكتابة التعليمة } حيث يؤدي جعل الدالة run تنفذ التعليمة return إلى إنهاء الخيط. اقتباس
السؤال
khaled0mohammed
كيف اوقف thread في جافا؟ شرح عن طريقة seelp()
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.