کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – اجرای چندین عملیات توسط thread های متفاوت در Java

آموزش Java – اجرای چندین عملیات توسط thread های متفاوت در Java

نحوه ی محول کردن اجرای یک عملیات به چندین thread در پردازش موازی

در شرایطی که تنها یک عملیات (task) برای اجرا کردن وجود دارد، یک متد run() نیز برای انجام عملیات کفایت می کند. در زیر مثالی را مشاهده می کنید که در آن یک عملیات را چندین thread اجرا می کنند:

class TestMultitasking1 extends Thread{  
 public void run(){  
   System.out.println("task one");  
 }  
 public static void main(String args[]){  
  TestMultitasking1 t1=new TestMultitasking1();  
  TestMultitasking1 t2=new TestMultitasking1();  
  TestMultitasking1 t3=new TestMultitasking1();  
  t1.start();  
  t2.start();  
  t3.start();  
 }  
}  

خروجی:

task one
task one
task one

در زیر مثال دیگری را مشاهده می کنید که در آن یک عملیات توسط چندین thread اجرا می شود:

class TestMultitasking2 implements Runnable{  
public void run(){  
System.out.println("task one");  
}  
public static void main(String args[]){  
Thread t1 =new Thread(new TestMultitasking2());//passing annonymous object of TestMultitasking2 class  
Thread t2 =new Thread(new TestMultitasking2());  
t1.start();  
t2.start();  
 }  
}  

خروجی:

task one
task one
نکته:

هر thread در callstack اختصاصی خود اجرا می شود.

آموزش Java

نحوه ی محول کردن اجرای چند عملیات مختلف به چند thread مجزا (multitasking در multithreading)

اگر که بایستی چندین عملیات را به چندین thread محول نمایید، در آن صورت لازم است برای هر thread یک متد run() مجزا تعریف نمایید. در زیر مثالی را مشاهده می نمایید که در آن دو عملیات متفاوت توسط دو thread مجزا اجرا می شوند:

class Simple1 extends Thread{  
 public void run(){  
   System.out.println("task one");  
 }  
}    
class Simple2 extends Thread{  
 public void run(){  
   System.out.println("task two");  
 }  
}    
 class TestMultitasking3{  
 public static void main(String args[]){  
  Simple1 t1=new Simple1();  
  Simple2 t2=new Simple2();  
  t1.start();  
  t2.start();  
 }  
}  

خروجی:

task one
task two

در زیر همان مثال را با کلاس فاقد نام (anonymous) که از کلاس Thread ارث بری دارد، مشاهده می کنید. این مثال دو عملیات مختلف را با دو thread مجزا اجرا می کند:

class TestMultitasking4{  
 public static void main(String args[]){  
  Thread t1=new Thread(){  
    public void run(){  
      System.out.println("task one");  
    }  
  };  
  Thread t2=new Thread(){  
    public void run(){  
      System.out.println("task two");  
    }  
  };      
  t1.start();  
  t2.start();  
 }  
}  

خروجی:

task one
task two

در زیر مشابه همان مثال را با کلاس فاقد نام (anonymous) که اینترفیس Runnable را پیاده سازی می کند، مشاهده می کنید:

class TestMultitasking5{  
 public static void main(String args[]){  
  Runnable r1=new Runnable(){  
    public void run(){  
      System.out.println("task one");  
    }  
  };  
  Runnable r2=new Runnable(){  
    public void run(){  
      System.out.println("task two");  
    }  
  };  
  Thread t1=new Thread(r1);  
  Thread t2=new Thread(r2);  
  t1.start();  
  t2.start();  
 }  
}  

خروجی:

task one
task two
1396/08/21 3027 1252
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...