Thread
پنجشنبه, ۳ شهریور ۱۴۰۱، ۰۶:۵۲ ق.ظ
روش یک: کلاسی را می نویسیم و آن را با رانبل ایمپلیمنت می کنیم و داخلش متد «ران» را اورراید می کنیم. و بعد آن را در یک کلاس دیگر اجرا می کنیم. به این صورت که یک آبجکت از آن کلاس می سازیم و بعد یک ثرد تولید می کنیم که در کانستراکتورش این آبجکت را قرار می دهیم و متد «استارت» آن ثرد را اجرا می کنیم.
روش دو: یک کلاس تولید می کنیم که کلاس ثرد را اکستند می کند و بعد متد ران آن را اورراید می کنیم. بعد از این کلاس یک آبجکت تولید می کنیم و متد استارت آن را اجرا می کنیم.
نمونه ای برای روش یک:
class Class1 implements Runnable { @ Override public void run() { for (int i = 0; i < 20; i++) System.out.println("Class1: " + i); } } // _________________________________________ class Class2 implements Runnable { @ Override public void run() { for (int i = 0; i < 20; i++) System.out.println("Class2: " + i); } } // _________________________________________ public class Tests { public static void main(String[]args) { Class1 object1 = new Class1(); Thread thread1 = new Thread(object1); thread1.start(); Class2 myObject2 = new Class2(); Thread thread2 = new Thread(myObject2); thread2.start(); for (int i = 0; i < 20; i++) { System.out.println(" main: " + i); } } }
نمونه ای برای روش دو:
class Class1 extends Thread { @ Override public void run() { for (int i = 0; i < 20; i++) System.out.println("Class1: " + i); } } // _________________________________________ class Class2 extends Thread { @ Override public void run() { for (int i = 0; i < 20; i++) System.out.println("Class2: " + i); } } // _________________________________________ public class Tests { public static void main(String[]args) { Class1 object1 = new Class1(); object1.start(); Class2 myObject2 = new Class2(); myObject2.start(); for (int i = 0; i < 20; i++) { System.out.println(" main: " + i); } } }
چرخه حیات یک ثرد:
----------------------------------
متدهای پرکاربرد کلاس Thread
-
public void run():
نقطه ی شروع اجرای thread می باشد. اجرای thread از این متد آغاز می شود. -
public void start():
اجرای thread را آغاز می کند. پس از فراخوانی این متد، JVM متد run() را در سطح کلاس Thread صدا می زند. -
public void sleep (long miliseconds):
سبب می شود thread ای که در زمان حاضر در حال اجرا به تعداد میلی ثانیه های مشخص به طور موقت، متوقف شود. -
public void join():
منتظر می ماند تا thread جاری از حافظه پاک شده و از بین برود. -
public void join(long miliseconds):
حداکثر تعداد میلی ثانیه های مشخصی صبر می کند تا thread جاری از بین برود. -
public int getPriority():
مقدار اولویت اجرا (priority) مربوط به thread جاری را برمی گرداند. -
public int setPriority(int priority):
مقدار اولویت اجرا thread را تغییر می دهد. -
public String getName():
اسم thread جاری را برمی گرداند. -
public void setName(String name):
اسم thread جاری را تغییر می دهد. -
public Thread currentThread():
متغیری از جنس thread جاری (اشاره گر به thread جاری) را برمی گرداند. -
public int getId():
شناسه ی منحصر بفرد و متناظر thread که در زمان ایجاد به آن تخصیص یافته را برمی گرداند. -
public Thread.State getState():
وضعیتی که thread جاری در آن قرار دارد را به عنوان خروجی برمی گرداند. -
public Boolean IsAlive():
بررسی می کند آیا thread مورد نظر در حافظه موجود (alive) بوده یا خیر. -
public void yield():
فراخوانی این متد سبب می شود آبجکت یا نمونه thread ای که در زمان حاضر در حال اجرا است به طور موقت متوقف شده و به سایر thread ها فرصت اجرا داده شود. -
: thread را به حالت تعلیق در می آورد (منسوخ).public void suspend()
-
ا فراخوانی این متد thread ای که به وسیله ی متد suspend() به حالت تعلیق درآمده، کار خود را ادامه می دهد(منسوخ).public void resume()
: ب -
public void stop()
: آبجکت thread جاری را متوقف می کند (منسوخ). -
public Boolean IsDaemon()
: بررسی می کند آیا thread جاری، یک thread پردازش عملیات پس زمنیه ای/از نوع daemonهست یا خیر. -
public void setDaemon(boolean b)
: مشخص می کند thread مورد نظر بایستی یک user thread باشد یا daemon thread. -
public void interrupt()
: thread جاری را متوقف می کند. -
public boolean isInterrupted()
بررسی می کند آیا thread متوقف شده است یا خیر. -
public static boolean interrupted()
: بررسی می کند آیا thread جاری متوقف شده است یا خیر.
۰۱/۰۶/۰۳