همزمانی ساختاریافته، یک پیشنهاد جدید که در جامعه OpenJDK انکوبه میشود، چندین کار در حال اجرا در رشتههای جاوای مختلف را به عنوان یک واحد کار در نظر میگیرد.
برنامهنویسی چند رشتهای میتواند برای توسعهدهندگان جاوا بر اساس طرحی که در حال حاضر در جامعه OpenJDK در حال رشد است، آسانتر شود.
پیشنهاد همزمانی ساختاریافته کتابخانهای را معرفی میکند که چندین کار در حال اجرا در رشتههای مختلف را به عنوان یک واحد کار بر اساس این پیشنهاد، کتابخانه جدید مدیریت و لغو خطا، بهبود قابلیت اطمینان و افزایش قابلیت مشاهده را ساده می کند. اهداف این طرح شامل بهبود قابلیت اطمینان و مشاهده کدهای چند رشته ای و ترویج یک سبک برنامه نویسی همزمان است که می تواند خطرات رایج ناشی از لغو و خاموش شدن را از بین ببرد، مانند نشت رشته و تاخیر در لغو. در این مرحله، پیشنهاد همزمانی ساختاریافته برای نسخه خاصی از جاوا هدف گذاری نشده است.
در این پیشنهاد آمده است که همزمانی ساختاریافته رویکردی برای برنامه نویسی چند رشته ای است که خوانایی و قابلیت نگهداری تجربه توسعه دهندگان را با کدهای تک رشته ای حفظ می کند. این اصل را دارد که اگر یک کار به وظایف فرعی همزمان تقسیم شود، همه آنها به یک مکان باز می گردند: بلوک کد کار. با بازگشت به همان بلوک کد، طول عمر یک کار فرعی همزمان به یک بلوک نحوی محدود می شود. از آنجا که وظایف فرعی خواهر و برادر به یک بلوک محدود می شوند، می توان آنها را به عنوان یک واحد استدلال کرد و مدیریت کرد. وظایف فرعی به نمایندگی از یک وظیفه – کد موجود در بلوک محصور – کار می کنند که منتظر نتایج است و آنها را برای خرابی نظارت می کند. همانند تکنیکهای برنامهنویسی ساختیافته برای کدهای تک رشتهای، قدرت همزمانی ساختاریافته برای رشتههای متعدد از دو ایده ناشی میشود: نقاط ورود و خروج کاملاً تعریف شده برای جریان اجرا از طریق یک بلوک کد، و تودرتوی دقیق طول عمر عملیات در روشی که آینه تودرتو در کد است.
در زمان اجرا، همزمانی ساختاریافته سلسله مراتبی درختی شکل از وظایف ایجاد میکند، با وظایف فرعی خواهر و برادر متعلق به همان وظیفه والد. درخت همتای همزمان پشته فراخوانی یک رشته واحد است.
همزمانی ساختاریافته مطابق با رشتههای مجازی است، که اجرای سبکی از رشتههای ارائهشده توسط JDK است. پیش نمایشی از رشته های مجازی برای Java 19 در سپتامبر امسال برنامه ریزی شده است. بسیاری از رشتههای مجازی، رشتههای سیستمعامل یکسانی را به اشتراک میگذارند، که امکان ایجاد تعداد زیادی رشته مجازی را فراهم میکند. اینها می توانند یک واحد رفتار همزمان، حتی رفتار I/O را نشان دهند. بنابراین، یک برنامه کاربردی سرور میتواند از همزمانی ساختاریافته برای پردازش هزاران یا میلیونها درخواست دریافتی به طور همزمان استفاده کند.
در اصل، رشتههای مجازی تعداد زیادی رشته را ارائه میکنند و همزمانی ساختاری تضمین میکند که آنها به درستی هماهنگ شدهاند. داشتن یک کتابخانه برای همزمانی ساختاریافته در JDK به توسعه دهندگان سمت سرور قابلیت نگهداری و قابلیت اطمینان را ارائه می دهد.
این پیشنهاد شامل جایگزینی ساختارهای همزمان در java.util.concurrent
یا ارائه یک API همزمان ساختار یافته قطعی برای جاوا نیست. این پیشنهاد همچنین قصد ندارد مکانیزمی برای به اشتراک گذاری جریان داده ها در بین رشته ها اضافه کند، اگرچه ممکن است در آینده به این موضوع رسیدگی شود. مکانیسم قطع موضوع موجود با مکانیسم لغو رشته جدید تحت پیشنهاد فعلی جایگزین نخواهد شد، اما ممکن است در آینده نیز این اتفاق بیفتد.
پست های مرتبط
همزمانی جاوا می تواند آسان تر شود
همزمانی جاوا می تواند آسان تر شود
همزمانی جاوا می تواند آسان تر شود