تعرف على الكائن Threads و طرق أستخدامه فى الجافا

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعرف على الكائن Threads و طرق أستخدامه فى الجافا

مُساهمة من طرف أحمد مناع في الجمعة أغسطس 09, 2013 11:43 pm

بسم الله الرحمن الرحيم 

أهلا وسهلا بكم إخوانى الكرام .....درس اليوم إن شاء الله عن الكائن Threads ....وهو أحد الكائنات المهمة لجدا لمعظم التطبيقات ..

أولا : نظرة عامة على الكائن  Threads  

وهو أحد الكائنات يتم استخدامة فى الجافا ليسمح للتطبيق بالقيام بعدة مهام مترابطة تعمل سويا بشكل متزامن و التى تعمل في الخلفية لتوفير المساحة في ذاكرة الجهاز ....دعونا نأخذ مثالا على ذلك. نفترض أنك تقوم بتطوير برنامج محرر نصوص... في هذه الحالة....يمكنك أن تجعل مشروعك يقوم بعدة مهام فى وقت واحد.....بأن تجعل التطبيق يسمح للمستخدم بالكتابة فى المحرر و أن يقوم التطبيق بالتدقيق الإملائي للنص الذى كتبته فى نفس الوقت قيد التشغيل ...

مثال أخر .... نفترض أنك تقوم بتطوير برنامج تحميل ملفات من الانترنت .....بدون إستخدام هذا الكائن سيقوم التطبيق بتحميل الملف لكنه لن يستطيع تحميل ملفات أخرى الى أن ينتهى من تحميل الملف الحالى ....أما أذا أستخدمت الكائن  Threads تستطيع تحميل أكثر من ملف فى وقت واحد ...

 
ثانيا : كيفية أستخدام الكائن  Threads

هناك خياران لديك لأستخدام الكائن  Threads   فيمكنك أستخدام هذا الكائن من خلال توسيع الفئة المراد أستخدامه فيها عن طريق الامر extends Thread أو من خلال تنفيذ واجهة "Runnable" عن طريق الامر implements Runnable 



1_ أستخدام الكائن من خلال توسيع الفئة extending Thread و تتطلب تلك الطريقة ما يلى :



أ_ يتم اضافة الامر  extends Thread الى الشفرة الخاصة لانشاء فئة معينة  
ب_ يجب أنشاء الطريقة void run و بداخلها الاوامر التى تريد تنفيذها بشكل متزامن .
ج_فى الدالة الرئيسة يتم إنشاء كائن من الفئة أعلاه 
د_فى الدالة الرئيسية يتم استدعاء الأسلوب "start" من الكائن الذى تم إنشاؤه.

الآن  الكائن  Threads  جاهز للاستخدام وسوف يبدأ تنفيذ الاوامر التى بداخل الطريقة  void run  بشكل متواز .....

مثال : في هذا المثال، سوف نقوم بإنشاء اثنين من Threads هما "FirstThread" و "SecondThread". وسيقوم كل من هذه الكائنات بطباعة أرقام 1، 2، 3 ... 10 مع تأخير ثانية واحدة في عرض الرقم التالي. سيتم الطبقة ThreadDemo انطلاق هذه المواضيع "FirstThread" و "SecondThread".

الشفرة الخاصة بالكائن الاول :

الرمز:
public class FirstThread extends Thread {
    public void run(){
    
     for (int i=1; i<=10; i++){
     System.out.println( "Messag from First Thread : " +i);
    
     try {
           Thread.sleep(1000);
        }
        catch (InterruptedException  interruptedException)
        {
   System.out.println(  "First Thread is interrupted when it is  sleeping" +interruptedException);
        }
      }
   }
}
الشفرة الخاصة بالكائن الثانى :

الرمز:
public class SecondThread extends Thread
{  
 
  
  public void run()    
  {            
  
    for (int i=1; i<=10; i++)        
    {          
       System.out.println( "Messag from Second Thread : " +i);                      
              
       try        
       {                
          Thread.sleep (1000);          
       }            
       catch (InterruptedException interruptedException)            
       {                
                      
           System.out.println( "Second Thread is interrupted when it is sleeping" +interruptedException);          
       }        
    }  
  }
}
الشفرة الخاصة فى الدالة الرئسية :
الرمز:


  public static void main(String args[])    
  {        
        
    FirstThread   firstThread = new FirstThread();              
      
    SecondThread   secondThread = new SecondThread();              
  
    firstThread.start();                
  
secondThread.start();  
  }
}




2_   أستخدام الكائن من خلال  تنفيذ واجهة "Runnable" و تتطلب تلك الطريقة ما يلى :



أ_يتم َإضافة الامر implements Runnable الى الشفرة الخاصة لبناء الفئة 
ب_   يجب أنشاء الطريقة void run و بداخلها الاوامر التى تريد تنفيذها بشكل متزامن 
ج_فى الدالة الرئيسة يتم إنشاء كائن من الفئة أعلاه 
د_تخصيص كائن thread للكائن الموجود لدينا
هــ_فى الدالة الرئيسية يتم استدعاء الأسلوب "start" من الكائن الذى تم إنشاؤه

مثال : نفس المثال السابق سنقوم بعملة بتلك الطريقة :

الكائن الاول :

الرمز:
public class FirstThread implements Runnable {
    public void run(){
    
     for (int i=1; i<=10; i++){
     System.out.println( "Messag from First Thread : " +i);
    
     try {
           Thread.sleep(1000);
        }
        catch (InterruptedException  interruptedException)
        {
   System.out.println(  "First Thread is interrupted when it is  sleeping" +interruptedException);
        }
      }
   }
}
الكائن الثانى :


الشفرة الخاصة بالكائن الثانى :

الرمز:
public class SecondThread extends Thread
{  
 
  
  public void run()    
  {            
  
    for (int i=1; i<=10; i++)        
    {          
       System.out.println( "Messag from Second Thread : " +i);                      
              
       try        
       {                
          Thread.sleep (1000);          
       }            
       catch (InterruptedException interruptedException)            
       {                
                      
           System.out.println( "Second Thread is interrupted when it is sleeping" +interruptedException);          
       }        
    }  
  }
}
الدالة الرئسية :

 
الرمز:
public static void main(String args[])
     {
        
        FirstThread   firstThread = new FirstThread();
      
        SecondThread   secondThread = new SecondThread();
      
        Thread thread1 = new Thread(firstThread);
        thread1.start();
      
        
        Thread thread2 = new Thread(secondThread);
    thread2.start();
     }
}

لاحظ الفرق بين الطريقتين فى الدالة الرئسية 


الى اللقاء فى درس أخر أن شاء الله تعالى 

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعرف على الكائن Threads و طرق أستخدامه فى الجافا

مُساهمة من طرف زهراء في الثلاثاء أغسطس 13, 2013 10:00 am

أشكرك من أعماق قلبى على مجهودك ....الله يبارك فيك ...و يحميك من كل شر

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى