طراحان Java امکاناتی را به این زبان اضافه کردند که خود زبان برنامه نویسی از Multithreading به سادگی پشتیبانی میکند به یاد داشته باشید که دو نوع Multitasking وجود دارد : Process و Thread. در Process Multitasking کوچکترین واحد قابل برنامه ریزی، یک Process میباشد. Process برنامه ای است که اصولا قابل اجرا است، بنابراین Process Multitasking ویژگی است که به کامپیوتر اجازه میدهد تا دو یا چند برنامه را در یک لحظه اجرا کند. در Thread Multitasking یک Thread کوچکترین واحد قابل برنامه ریزی بوده و مسیری از اجرا را درون یک برنامه تعریف میکند. بنابراین یک Process میتواند دو یا چند Thread را برای اجرا شامل شود.
Process Multitasking از امکانات سیستم عامل بوده در صورتیکه Thread Multitasking از مزایای خود زبان برنامه نویسی میباشد. برای مثال زبان C++ به طور داخلی از برنامه نویسی Multithread پشتیبانی نمیکند و از امکانات سیستم عامل برای این منظور بهره میبرد یعنی ایجاد، اجرا، همزمانی و پایان رساندن Thread با استفاده از توابع سیستمی انجام میپذیرد در نتیجه برنامه های Multithread با این زبان قابل انتقال به محیطهای دیگر نیستند.
به خاطر اینکه زبان Java به صورت داخلی از برنامه های Multithread پشتیبانی میکند خیلی از کارها به صورت خودکار انجام میگیرد. یکی از بهترین امکانات Java در زمینه Multithreading امکان همزمانی (synchronization) میباشد. همزمانی براساس دو ویژگی پی ریزی شده است، اول اینکه تمام اشیا به صورت پایه ای امکاناتی دارند که Mutually Exclusive را نشان میدهند. در این حالت فقط یک Thread در یک لحظه میتواند یک Monitor در اختیار داشته باشد. زمانیکه متد Synchronized فراخوانی میشود شی مورد نظر قفل شده و threadهای دیگر برای دسترسی به آن باید منتظر بمانند.
تا قبل از Java بیشتر برنامه هایی که تولید شده اند به صورت یکپارچه در یک مسیر اجرا میشدند اما بعد از Java برنامه ها به صورت مجموعه ای از Taskهای موازی که با یکدیگر ارتباط دارند اجرا میگردد. این تغییر در پردازش موازی تاثیر گسترده ای در تولید نرم افزار داشته است.