مشخصات مقاله
-
1252
-
0.0
-
3027
-
0
-
0
آموزش 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 اختصاصی خود اجرا می شود.
نحوه ی محول کردن اجرای چند عملیات مختلف به چند 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