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 جاری متوقف شده است یا خیر.
۰۱/۰۶/۰۳