الوقت/التاريخ الآن هو الثلاثاء مارس 19, 2024 7:01 am

1 نتيجة بحث عن بشكل

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

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

أهلا وسهلا بكم إخوانى الكرام .....درس اليوم إن شاء الله عن الكائن#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();
     }
}


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


الى اللقاء فى درس أخر أن شاء الله تعالى 
من طرف أحمد مناع
في الجمعة أغسطس 09, 2013 11:43 pm
 
ابحث في: أساسيات اللغة Java Basics
موضوع: تعرف على الكائن Threads و طرق أستخدامه فى الجافا
المساهمات: 1
مشاهدة: 4704

الرجوع الى أعلى الصفحة

انتقل الى: