به عنوان یک کاربر ما ترجیح می دهیم برنامه ای که با آن در حال کار هستیم، به سرعت به درخواست ها و تعاملات ما پاسخ بدهد و در زمان پردازش اطلاعات و یا بارگذاری آن ها، دچار freeze نشود (یا به اصطلاح، هنگ نکند.). در برنامه هایی که بر روی دسکتاپ اجرا می شوند، معمولا کاربران، شکیبایی بیشتری در صورت اجرا نشدن درست برنامه دارند ولی در مورد برنامه های موبایل اینطور نیست و کاربران انتظار پاسخ سریع و درست دستگاه را دارند. همچنین برای جلب رضایت کاربران در سیستم عامل های جدید، امکانی به کاربران داده شده است که می توانند برنامه هایی که راندمان دستگاه را پایین می آورند، به طور کلی از حالت اجرا خارج کنند. اگر شما یک برنامه نویس باشید، احتمالا با این مورد مواجه شده اید که ناگهان برنامه تان قادر به واکنش و انجام امور نباشد. یک مثال ساده می تواند زمانی باشد که درخواست های زیادی به سمت سرور فرستاده می شود و پاسخ آن ها بیشتر از حد معمول طول می کشد (که مثلا این مساله می تواند ناشی از مشکلاتی در سمت سرور باشد). اگر این درخواست ها به صورت همزمان فرستاده شده باشند، دستگاه تا زمانی که مشکل خود را برطرف نکند، نمی تواند به هیچ یک از درخواست ها پاسخ بدهد. اما در برنامه نویسی غیر همزمان نیز مشکلات و مباحثی وجود دارد که باعث بدتر شدن کار می شود. در دوره آموزشی Pluralsight Rethinking Asynchronous Programming با برنامه نویسی غیرهمزمان در جاوا آشنا می شوید و پس از آن به نقد و بررسی مشکلات ناشی از آن می پردازیم.