Bu konuda çok fazla cevap var, ancak kafa karıştırıcı olabilir. Bunu bu şekilde düşünmeyi seviyorum ve belki de yardımı olur ::
Eşzamanlı programlama , yürütme sırasına aldırış etmeyen koddur. Java, eşzamanlı programlama için zayıf bir dildir, ancak yardımcı olacak kütüphaneler ve çerçeveler vardır. JavaScript, eşzamanlı programlama için mükemmel bir dildir ve eş zamanlı olmayan bir şey yazmak istediğinizde genellikle zordur(örneğin, yürütme sırasını zorlamak istiyorsanız). Eşzamanlı programlama, olaya dayalı programlama için harikadır (yürütme sırasını, bir düğmeyi tıklattığınızda veya bir kutuya yazdığınızda hareket eden tarayıcınızda çalışan kod gibi) olay dinleyicileri tarafından belirlenir.
Bir örnek, yüz HTTP isteği oluşturmayı içerir. DüğümJS'de en basit çözüm, geri çağırma yöntemiyle 100 isteğin tümünü aynı anda açmaktır ve yanıtlar geri geldiğinde, her seferinde bir yöntem yürütülür. Bu eşzamanlı programlama. Ruby'de, en basit (en yaygın) çözüm, bir istek açmak ve yanıtı işlemek, bir sonraki isteği açmak ve yanıtı işlemek vb. Sunucuyu kırmaktan veya giden bağlantılarınızı en üst düzeye çıkarmaktan kaçınmak için dikkatli olun (yanlışlıkla yapmak kolaydır). Ruby'yi eşzamanlı bir şekilde yazabilirsiniz, ancak çoğu Ruby kodunun yazılma şekli değildir ve bunu yapmak için biraz acı verir.
Paralel programlamaAynı anda birden fazla iş parçacığında veya işleminde çalıştırılabilen koddur. Bu, kodu birden fazla CPU'da çalıştırarak performansı optimize etmenize olanak sağlar (genellikle Akka gibi bir makinede olduğu gibi birden fazla makine dahil). NodeJS çoklu iş parçacığı olmadığından ve paralel yürütme olmadığından, iş parçacığı kodu yazma konusunda endişelenmenize gerek yoktur (ve gördüğüm çoğu JavaScript kodu iş parçacığı güvenliği değildir). Java, dil eşzamanlı programlamayı normal kalıp yapmasa da, paralel programlama oldukça yerleşiktir ve iş parçacığı güvenliği konusunda sık sık endişelenmeniz gerekir. Java’da bir Web Sitesi yazıyorsanız, bu genellikle her isteği aynı bellekte ayrı bir iş parçacığında çalıştıran bir kapta çalıştırılır,
Yukarıdakilerden bazıları bahsettiğiniz kapsam ve sınırlara bağlıdır. Web sitelerinde çalışıyorum. Gördüğüm çoğu Java kodu eşzamanlı programlama değil. Tabii, yeterince yakınlaştırırsanız, müşterinin istediği siparişin gelme sırası önemli değildir, ancak bundan daha fazla yakınlaştırırsanız, işlerin gerçekleştirilme sırası kod tarafından belirlenir. Ancak kod, isteklerin iş parçacığı için güvenli olması gereken çok sayıda paylaşılan nesneye paralel olarak yürütülebilmesi için yazılmıştır.
Bu arada, gördüğüm çoğu JavaScript kodu eşzamanlı: yürütme sırasının birçok düzeyde önemsiz olduğu şekilde yazılıyor. Ancak paylaşılan bellekte paralel yürütmeyi desteklemek için yazılmamıştır. Elbette, aynı kodu birden fazla işlem boyunca paralel olarak çalıştırabilirsiniz, ancak nesneler paylaşılmaz, bu nedenle anlamlı bir şekilde paralel programlama değildir.
Ek okumalar için, bu sorunun en üst cevabındaki resimlerden gerçekten hoşlanıyorum: https://www.quora.com/What-are-the-differences-between-parallel-concurrent-and-asynchronous-programming