manvaputra
دوشنبه 15 مهر 1387, 00:56 صبح
پیش نیاز:
Thread در جاوا - قسمت اول:مفاهیم اولیه Thread (http://barnamenevis.org/forum/showthread.php?t=123116)
Thread در جاوا - قسمت دوم:ایجاد ترد با استفاده از روش بسط کلاس Thread (http://barnamenevis.org/forum/showthread.php?t=123261)
Thread در جاوا - قسمت سوم:ایجاد ترد با استفاده از واسط Runnable (http://barnamenevis.org/forum/showthread.php?t=123547)
Thread در جاوا -قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد (http://barnamenevis.org/forum/showthread.php?t=124632)
متدهای کلاس ترد:
در این بخش به بررسی تعدای از متدهای مربوط به کلاس ترد می پردازیم:
activeCount (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#activeCount%28%29):
این متد تعداد تردهای فعال در یک گروه مشخص را به شما بر می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
System.out.println(Thread.activeCount() );
}
}
در مثال ساده بالا مقدار یک در خروجی چاپ خواهد شد چون فقط یک ترد فعال داریم .
checkAccess :
برای تعیین قابل دسترسی (modify ) بودن ترد مورد استفاده قرار می گیرد.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
try{
test.checkAccess();
}catch(SecurityException e)
{System.out.println(" sorry you dont have permission" );}
System.out.println("you have permission" );
}
}
currentThread :
تردی که این متد در آن صدا زده شده است را بر می گرداند. به مثال بالا توجه فرمایید ترد test از نوع main میباشد چون متد currentThread در main صدا زده شده است.
destroy (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#destroy%28%29) :
برای از بین بردن ترد بکار می رود.
Test.destroy();
getId :
مشخصه((ID ترد مورد نظر را می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getId());
}
}
getName :
نام ترد مورد نظر را بر می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getName());
}
}
برای تغییر نام ترد ازsetName (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#setName%28java.lang.String%29) استفاده می شود.
getPriority:
الویت ترد را نمایش می دهد.
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getPriority());
}
}
الویت یا حق تقدم یک ترد عددی است که در بازه یک (کمترین) و ده (بیشترین) قرار دارد. اولیت هر ترد در حالت پیش فرض روی مقدار نرمال 5 قرار می گیرد. برای تغییر الویت یک ترد از setPriority استفاده می شود.
getState :
وضعیت یا حالتی کع ترد در آن قرار دارد را بر می گرداند.
public class manvaputra {
public static void main(String[] args) {
Thread.State state = Thread.currentThread().getState();
System.out.println(state);
}
}
هر ترد چرخه حیات (Life Cycle) مربوط به خود را دارد که در طول این چرخه در یکی از حالات زیر به سر می برد:
·NEW
تردی که به تازگی ایجاد شده و هنوز اجرا نشده در این وضعیت قرار دارد.
·RUNNABLE
تردی که در حال اجرا می باشد در این وضعیت قرار دارد.
·BLOCKED
تردی که در یکی از حالات بلاک مانند بلاک شدن ورودی و خروجی باشد در این وضعیت قرار می گیرد.
·WAITING
تردی که مدت زمان نا مشخصی را در انتظار انجام عملیاتی از سوی تردی دیگر سپری کند در این وضعیت قرار می گیرد.
·TIMED_WAITING
تردی که مدت زمان مشخصی را در انتظار انجام عملیاتی از سوی تردی دیگر سپری کند در این وضعیت قرار می گیرد.
·TERMINATED
تردی که از حالت فعال خارج می شود (مثلا به علت اتمام مرحله و بسته شده) در این وضعیت قرار می گیرد.
getThreadGroup :
گروهی را که ترد مورد نظر ما جزیی از آن است بر می گرداند.
public class manvaputra {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getThrea dGroup().getName());
}
}
Interrupts :
برای ایجاد وقفه در یک روند اجرای یک ترد از این متد استفاده می شود.
interrupted :
چنانچه ترد جاری دچار وقفه شده باشد مقدار صحیح بر می گرداند.
isInterrupted :
چنانچه ترد مورد نظر وقفه شده باشد مقدار صحیح بر می گرداند.
isAlive :
مشخص می کند که ترد مورد نظر در حالت فعال می باشد یا خیر.
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
if (test.isAlive())
System.out.println("YES");
}
}
isDaemon :
چنانچه تردی از نوع دمون باشد مقدار صحیح را بر می گرداند. تردهای دمون تردهایی هستند که بصورت سرویس دهنده به تردهای دیگر و در پشت پرده فعال هستند. به طور مثال ترد دمون A خدمات خاصی را برای سایر تردها فراهم می کند در این صورت ترد A همواره در انتظار دریافت درخواست خدمات از سوی سایرین است و به محض دریافت درخواست خدمات مربوطه را برای درخواست کننده فراهم می کند.
Join :
با استفاده از این متد سیستم تا زمان انجام تردی که join شده منتظر می ماند. فرض کنید که ما در ترد A از دستور B.join() استفاده می کنیم در این حالت ترد A تا پایان ترد B منتظر می ماند.
Sleep :
اجرای یک ترد را به تخیر می اندازد . آرگومان ورودی این متد عددی بر حسب میلی ثانیه می باشد.
yield :
به طور موقت اجرای یک ترد را متوقف کرده و حالت اجرا را در اختیار ترد بعدی که در نوبت است قرار می دهد.
Thread در جاوا - قسمت اول:مفاهیم اولیه Thread (http://barnamenevis.org/forum/showthread.php?t=123116)
Thread در جاوا - قسمت دوم:ایجاد ترد با استفاده از روش بسط کلاس Thread (http://barnamenevis.org/forum/showthread.php?t=123261)
Thread در جاوا - قسمت سوم:ایجاد ترد با استفاده از واسط Runnable (http://barnamenevis.org/forum/showthread.php?t=123547)
Thread در جاوا -قسمت چهارم:پیاده سازی مثال چت با استفاده از مالتی ترد (http://barnamenevis.org/forum/showthread.php?t=124632)
متدهای کلاس ترد:
در این بخش به بررسی تعدای از متدهای مربوط به کلاس ترد می پردازیم:
activeCount (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#activeCount%28%29):
این متد تعداد تردهای فعال در یک گروه مشخص را به شما بر می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
System.out.println(Thread.activeCount() );
}
}
در مثال ساده بالا مقدار یک در خروجی چاپ خواهد شد چون فقط یک ترد فعال داریم .
checkAccess :
برای تعیین قابل دسترسی (modify ) بودن ترد مورد استفاده قرار می گیرد.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
try{
test.checkAccess();
}catch(SecurityException e)
{System.out.println(" sorry you dont have permission" );}
System.out.println("you have permission" );
}
}
currentThread :
تردی که این متد در آن صدا زده شده است را بر می گرداند. به مثال بالا توجه فرمایید ترد test از نوع main میباشد چون متد currentThread در main صدا زده شده است.
destroy (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#destroy%28%29) :
برای از بین بردن ترد بکار می رود.
Test.destroy();
getId :
مشخصه((ID ترد مورد نظر را می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getId());
}
}
getName :
نام ترد مورد نظر را بر می گرداند.
مثال:
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getName());
}
}
برای تغییر نام ترد ازsetName (http://barnamenevis.org/forum/../tools/jdk-6-doc/docs/api/java/lang/Thread.html#setName%28java.lang.String%29) استفاده می شود.
getPriority:
الویت ترد را نمایش می دهد.
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
System.out.print(test.getPriority());
}
}
الویت یا حق تقدم یک ترد عددی است که در بازه یک (کمترین) و ده (بیشترین) قرار دارد. اولیت هر ترد در حالت پیش فرض روی مقدار نرمال 5 قرار می گیرد. برای تغییر الویت یک ترد از setPriority استفاده می شود.
getState :
وضعیت یا حالتی کع ترد در آن قرار دارد را بر می گرداند.
public class manvaputra {
public static void main(String[] args) {
Thread.State state = Thread.currentThread().getState();
System.out.println(state);
}
}
هر ترد چرخه حیات (Life Cycle) مربوط به خود را دارد که در طول این چرخه در یکی از حالات زیر به سر می برد:
·NEW
تردی که به تازگی ایجاد شده و هنوز اجرا نشده در این وضعیت قرار دارد.
·RUNNABLE
تردی که در حال اجرا می باشد در این وضعیت قرار دارد.
·BLOCKED
تردی که در یکی از حالات بلاک مانند بلاک شدن ورودی و خروجی باشد در این وضعیت قرار می گیرد.
·WAITING
تردی که مدت زمان نا مشخصی را در انتظار انجام عملیاتی از سوی تردی دیگر سپری کند در این وضعیت قرار می گیرد.
·TIMED_WAITING
تردی که مدت زمان مشخصی را در انتظار انجام عملیاتی از سوی تردی دیگر سپری کند در این وضعیت قرار می گیرد.
·TERMINATED
تردی که از حالت فعال خارج می شود (مثلا به علت اتمام مرحله و بسته شده) در این وضعیت قرار می گیرد.
getThreadGroup :
گروهی را که ترد مورد نظر ما جزیی از آن است بر می گرداند.
public class manvaputra {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getThrea dGroup().getName());
}
}
Interrupts :
برای ایجاد وقفه در یک روند اجرای یک ترد از این متد استفاده می شود.
interrupted :
چنانچه ترد جاری دچار وقفه شده باشد مقدار صحیح بر می گرداند.
isInterrupted :
چنانچه ترد مورد نظر وقفه شده باشد مقدار صحیح بر می گرداند.
isAlive :
مشخص می کند که ترد مورد نظر در حالت فعال می باشد یا خیر.
public class manvaputra {
public static void main(String[] args) {
Thread test=Thread.currentThread();
if (test.isAlive())
System.out.println("YES");
}
}
isDaemon :
چنانچه تردی از نوع دمون باشد مقدار صحیح را بر می گرداند. تردهای دمون تردهایی هستند که بصورت سرویس دهنده به تردهای دیگر و در پشت پرده فعال هستند. به طور مثال ترد دمون A خدمات خاصی را برای سایر تردها فراهم می کند در این صورت ترد A همواره در انتظار دریافت درخواست خدمات از سوی سایرین است و به محض دریافت درخواست خدمات مربوطه را برای درخواست کننده فراهم می کند.
Join :
با استفاده از این متد سیستم تا زمان انجام تردی که join شده منتظر می ماند. فرض کنید که ما در ترد A از دستور B.join() استفاده می کنیم در این حالت ترد A تا پایان ترد B منتظر می ماند.
Sleep :
اجرای یک ترد را به تخیر می اندازد . آرگومان ورودی این متد عددی بر حسب میلی ثانیه می باشد.
yield :
به طور موقت اجرای یک ترد را متوقف کرده و حالت اجرا را در اختیار ترد بعدی که در نوبت است قرار می دهد.