میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

آموزش Thread در جاوا

آموزش Thread در جاوا

آموزش Thread در جاوا

Multi Thread

کمتر پیش آمده در نرم افزارهای جدید از همزمانی(Multi Threading) استفاده نشود. بسیاری از نرم افزارهای امروزه از همزمانی استفاده میکنند که باعث سرعت کار ما می شود. با پیشرفت سخت افزار ها امکان همزمانی بیشتر از قبل شده است. به طور کلی همزمانی در برنامه بدین معناست که برنامه شامل دو یا چند قسمت است که همزمان اجرا می شوند و هر قسمت فرآیند متفاوتی را اجرا می کنند.

وقتی  که چند فرآیند منبع یا منابعی را به اشتراک میگذارند مانند CPU، چند وظیفه ای (multi tasking) میگویند. Multi threading ایده multi tasking درون برنامه ها گسترده کرده است به طوری که شما توانایی تقسیم یک عملیات به یک یا چندین thread مجزا را دارید.هر کدام از این  thread ها میتوانند به صورت همزمان اجرا شوند.

 

چرخه حیات Thread

آموزش Thread در جاوا
آموزش Thread در جاوا

یک Thread (منظور thread در جاوا) در چرخه حیات خود وضعیت های مختلفی را دارد مانند:

  • New: در این وضعیت Thread چرخه حیات خود را آغاز میکند.تا زمانی که شروع به کار نکرده Thread در همین وضعیت باقی خواهد ماند.
  • Runnable: بعد از زمان کوتاهی Thread تازه ساخته شده وارد این وضعیت شده است. در این وضعیت thread را در حال اجرا یک فرآیند در نطر میگیرند.
  • Waiting: گاهی اوقات یک thread منتظر تمام شدن یک thread دیگر است در این حالت thread در وضعیت waiting قرار دارد. بعد از اتمام انتظار (وقتی thread دوم تمام شد) وضعیت thread به Runnable می رود.
  • Dead: وقتی فرآیند تمام شود Thread به وضعیت Dead میرود.
  • Running: وضعیت اجرا یک Thread

حال نوبت به پیاده سازی thread در جاوا رسیده است.در جاوا میتوان به طرق مختلفی thread را پیاده سازی کرد:

  1. از طریق implement کردن Runnable
  2. از طریق extend کردن کلاس thread
  3. ساختن کلاس بی نام با استفاده از Runnable

از طریق implement کردن Runnable

ابتدا یک کلاس به نام Runner می سازیم. بعد کلاس را implements میکنیم به Runnable . وقتی implement به Runnable میکنیم باید متد به نام Run را در کلاس خود پیاده سازی کنیم.این متد وقتی Thread شروع میشود صدا زده میشود.(وضعیت Running). در متد Run ما یک کد ساده میزنیم که hello و شماره آن را چاپ کند.

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 خور را می سازیم.

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  می نویسیم.

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 داریم.

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 انجام میدهیم.

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();

}

 

در صورت داشتن مشکل و سوال میتوانید زیر همین پست کامنت بگذارید .

برای دانلود پکیج کامل فیلم آموزش برنامه نویسی اندروید کلیک نمائید .

بزرگ ترین مرجع آموزش برنامه نویسی اندروید در ایران

دیدگاه کاربران
  • مرتضی قاسم خانی 21 ارد 1398

    در صورت داشتن هر گونه سوال و انتقاد و پیشنهاد می توانید از در این قسمت مطرح نمائید و یا برای ارتباط مستقیم می توانید بعد از ثبت نام از بخش تیکت اقدام به ثبت تیکت نمائید .

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟