آموزش Thread در جاوا
آموزش Thread در جاوا بخش 2
پیاده سازی thread در جاوا
حال نوبت به پیاده سازی thread در جاوا رسیده است.در جاوا میتوان به طرق مختلفی thread را پیاده سازی کرد:
- از طریق implement کردن Runnable
- از طریق extend کردن کلاس thread
- ساختن کلاس بی نام با استفاده از Runnable
از طریق implement کردن Runnable
ابتدا یک کلاس به نام Runner می سازیم. بعد کلاس را implements میکنیم به Runnable . وقتی implement به Runnable میکنیم باید متد به نام Run را در کلاس خود پیاده سازی کنیم.این متد وقتی Thread شروع میشود صدا زده میشود.(وضعیت Running). در متد Run ما یک کد ساده میزنیم که hello و شماره آن را چاپ کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Runner implements Runnable{ public void run() { for (int i = 0; i < 10; i++) { System.out.println(“hello “+ i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } |
کد main به صورت زیر است. از کلاس Thread یک Object میسازیم.کلاس Thread در constructor خود یک Runnable میگیرد و ما در ورودی Runner خور را می سازیم.
1 2 3 4 5 6 | public static void main(String[] args) { Thread th1 = new Thread(new Runner()); Thread th2 = new Thread(new Runner()); th1.start(); th2.start(); } |
از طریق extend کردن کلاس thread
یک کلاس Runner میسازیم(مثل قبل). حالا کلاس خود را extends میکنیم به Thread. مانند قبل متد Run می نویسیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Runner extends Thread{ public void run() { for (int i = 0; i < 10; i++) { System.out.println(“hello “+ i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } |
کد main به صورت زیر است. از کلاس Runner یک Object میسازیم. خود Runner یک Thread است پس فقط نیاز به start کردن thread داریم.
1 2 3 4 5 6 | public static void main(String[] args) { Runner runner1 = new Runner(); Runner runner2 = new Runner(); runner1.start(); runner2.start(); } |
ساختن کلاس بی نام با استفاده از Runnable
در متد main وقتی از کلاس thread یک object میسازیم درون constructor یک کلاس بی نام میسازیم.این کار را با new کردن از runnable در constructor انجام میدهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void main(String[] args) { Thread th1 = new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { System.out.println(“hello ” + i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); th1.start(); } |