0% found this document useful (0 votes)
46 views4 pages

60th Session, Concurrency in Java

Uploaded by

arun rathi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views4 pages

60th Session, Concurrency in Java

Uploaded by

arun rathi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

‫به نام خدا‬

‫آموزش شصتم‬
‫اهداف آموزشی این قسمت عبارتند از‪:‬‬
‫‪ .1‬معرفی ‪ Concurrency‬در زبان برنامه نویسی جاوا‬
‫‪ .2‬آشنایی با ‪Synchronization‬‬

‫یکی از تفاوت های عمده خانم ها و آقایان به میزان ‪ Concurrency‬در آنها مرتبط است‪ .‬پیش‬
‫از توضیح پیرامون این مسئله دو تصویر زیر را با یکدیگر مقایسه می کنیم‪:‬‬

‫در تصویر فوق عکس آقایی را می بینیم که قصد دارد چند کار را به صورت هم زمان انجام دهد‪.‬‬
‫همانطور که چهره این آقا نشان می دهد‪ ،‬کامالً مشخص است که او چقدر در این کار موفق است‪.‬‬
‫علت این مسئله هم آن است که اکثر آقایان دارای این ویژگی هستند که در لحظه فقط می توانند‬
‫روی یک کار و نهایتاً دو کار متفاوت تمرکز کنند و این در صورتی است که اگر بیش از یک کار‬
‫‪1‬‬
‫‪Page‬‬

‫دوره آموزش جاوا‬


‫کلیه حقوق متعلق به وب سایت نردبان است‪.‬‬
‫مدرس‪ :‬بهزاد مرادی‬
‫به ایشان تفویض شود کیفیت کار ایشان به مراتب پایین خواهد آمد‪ .‬حال ببینیم که این وضعیت در‬
‫مورد خانم ها به چه شکل است‪:‬‬

‫می بنیم که این خانم با رضایت تمام از طریق تلفن به راهنمایی فرد پشت خط می پردازد‪ ،‬کار ارباب‬
‫رجوع را انجام می دهد‪ ،‬نوشیدنی میل می کند و مهم تر از همه آخرین لطیفه هایی که برایش از‬
‫طریق پیام کوتاه ارسال می شوند را نیز از دست نمی دهد‪ .‬اگر به چهره این خانم توجه کنیم‪ ،‬می‬
‫بینیم که او با رضایت کامل همه این کارها را به صورت هم زمان انجام می دهد و جالب اینجا است‬
‫که هر یک از کارها با نهایت دقت و کیفیت انجام می شوند و توجه به یک کار او را از کار دیگری‬
‫باز نمی دارد (قابل توجه آقایانی که خود را برتر از خانم ها می دانند)‪.‬‬
‫به طور کلی ‪ API‬های موجود در ذهن خانم ها به صورت ‪ Concurrent‬برنامه ریزی شده اند به‬
‫این صورت که چندین کار به صورت هم زمان در چارچوب ذهنی خانم ها می تواند صورت پذیرد‬
‫اما این در حالی است که ذهن آقایان ‪ Concurrent‬نیست‪.‬‬
‫در زبان برنامه نویسی جاوا هم قضیه به همین صورت است‪ .‬در حقیقت زبان جاوا از همان ابتدای‬
‫شکل گیری دارای مفهومی تحت عنوان ‪ Concurrency‬بود‪ .‬به عبارت دیگر طراحان این زبان‬
‫برنامه نویسی قصد داشتند زبانی ایجاد کنند که در آن این امکان به برنامه نویسان و توسعه دهندگان‬
‫‪2‬‬

‫داده شود که بتوانند به صورت هم زمان چندین ‪ Thread‬یا کار را در برنامه خود عملی سازند‬
‫‪Page‬‬

‫دوره آموزش جاوا‬


‫کلیه حقوق متعلق به وب سایت نردبان است‪.‬‬
‫مدرس‪ :‬بهزاد مرادی‬
‫(الزم به ذکر است که در نسخه جاوای ‪ 5‬به بعد‪ API ،‬های پیشرفته ای برای استفاده از مفهوم‬
‫‪ Concurrency‬در این زبان اضافه شده اند)‪.‬‬
‫مفهوم ‪ Concurrency‬در زبان جاوا دارای ارتباطی مستقیم با تعاملی تر شدن یک برنامه می شود‪.‬‬
‫فرض کنیم که برنامه ما نیاز دارد تا یک فایل را از طریق شبکه دانلود کند سپس بعد از آنکه فایل‬
‫تکمیل شد اقدام به پخش آن فایل نماید‪ .‬اگر برنامه ما ‪ Concurrent‬نباشد می بایست مدت زمان‬
‫قابل توجه ی را بسته به حجم فایل صبر کنیم تا دانلود فایل تکمیل شود و پس از آنکه فایل کامالً‬
‫تکمیل شد آن را پخش نماییم‪ .‬اما اگر برنامه ما ‪ Concurrent‬باشد این دو کار را به صورت هم‬
‫زمان می توانیم انجام دهیم‪ .‬به عبارت دیگر زمانیکه فایل دانلود می شود برنامه ما اقدام به پخش‬
‫بخشی از فایل می کند که با موفقیت دانلود شده است‪ .‬چنین امکانی تجربه کاربری بهتری را در‬
‫اختیار کاربران قرار خواهد داد‪.‬‬
‫هر برنامه جاوا حداقل داری یک ‪ Thread‬است که تحت عنوان ‪ Main Thread‬یا ‪Thread‬‬
‫اصلی شناخته می شود و این ‪ Thread‬اصلی می تواند دیگر ‪ Thread‬ها را در خود جای دهد‬
‫(همانطور که در آموزش های پیشین در مباحث مرتبط با ‪ Thread‬ها دیدیم‪ ،‬می توانیم چندین‬
‫‪ Thread‬را در متد ‪ main‬ایجاد کنیم و این در حالی است که این متد ‪ main‬را می توان به عنوان‬
‫‪ Thread‬اصلی برنامه خود نیز در نظر بگیریم)‪.‬‬
‫حال فرض کنیم که برنامه ای داریم که ‪ Concurrent‬است‪ .‬به عبارت دیگر این برنامه حاوای‬
‫چندین ‪ Thread‬است که هر کدام وظیفه دارند کار خاصی را انجام دهند‪ .‬در شرایطی این چنین‬
‫می بایست ساز و کاری داشته باشیم که از تداخل عملکرد ‪ Thread‬ها جلوگیری به عمل آورد‪.‬‬
‫بنابراین به مفهومی تحت عنوان ‪ Synchronization‬نیاز داریم‪ .‬معادل فارسی این واژه "هم‬
‫زمانی" است‪ .‬در واقع هم زمانی مابین ‪ Thread‬ها این اطمینان را به ما می دهد که مثالً زمانیکه‬
‫یک ‪ Thread‬در حال ویرایش یک فایل است و یا نوشتن یک فایل جدید است دیگر ‪Thread‬‬
‫ها امکان دسترسی به آن ‪ Thread‬را نداشته و می بایست منتظر بمانند تا کار آن ‪ Thread‬به اتمام‬
‫برسد‪ .‬علت به کارگیری از مفهوم ‪ Synchronization‬این است که هر دو ‪ Thread‬اطالعات‬
‫یکسانی را اصطالحاً ‪ Share‬می کنند یا به اشتراک می گذارند‪ .‬بنابراین اگر به ‪ Thread‬ها اجازه‬
‫‪3‬‬

‫دخالت در کار یکدیگر داده شود می توانیم انتظار مشکالتی در برنامه خود را داشته باشیم‪.‬‬
‫‪Page‬‬

‫دوره آموزش جاوا‬


‫کلیه حقوق متعلق به وب سایت نردبان است‪.‬‬
‫مدرس‪ :‬بهزاد مرادی‬
‫پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤاالت زیر پاسخ بدهیم‪:‬‬
‫‪ .1‬منظور از ‪ Concurrency‬در زبان برنامه نویسی جاوا چیست؟‬
‫‪ .2‬چرا در زبان برنامه نویسی جاوا بایستی ‪ Thread‬ها را ‪ Synchronize‬کرد؟‬
‫‪4‬‬
‫‪Page‬‬

‫دوره آموزش جاوا‬


‫کلیه حقوق متعلق به وب سایت نردبان است‪.‬‬
‫مدرس‪ :‬بهزاد مرادی‬

You might also like