Web Uygulamaları için web kapsayıcısının çoklu iş parçacığına dikkat ettiğini söylerken doğru muyum?
Çoğu web sunucusu (Java ve JBoss dahil başka türlü) "istek başına bir iş parçacığı" modelini izler, yani her HTTP isteği tam olarak bir iş parçacığı tarafından tam olarak işlenir. Bu iş parçacığı çoğu zaman DB istekleri gibi şeyleri bekleyerek geçirir. Web kapsayıcısı gerektiğinde yeni iş parçacıkları oluşturur.
Bazı sunucular (Java ekosisteminde öncelikle Netty ), "tek bir iş parçacığı her şeyi yapar" modeliyle veya daha karmaşık bir şeyle eşzamansız istek işleme yapar. Temel fikir, çok sayıda bekleyen iş parçacığına sahip olmanın kaynakları boşa harcamasıdır, bu nedenle eşzamansız olarak çalışmak daha verimli olabilir.
Öyleyse, Web Tabanlı uygulamalara yeni basamaklar ekleyebilir miyim?
Bu mümkündür, ancak çok dikkatli bir şekilde yapılmalıdır, çünkü hatalar (bellek sızıntıları veya eksik senkronizasyon gibi) çoğaltılması çok zor olan hatalara neden olabilir veya tüm sunucuyu yıkabilir.
Bunu yapmanın herhangi bir avantajı var mı ve hangi senaryoda bunu yapmak gerekir?
Avantajı, paralel olarak bir şeyler yapabilmenizdir. Saf hesaplama hızını artırmak için konuları kullanarak gereken bir şeydir değil diğer isteklerin işleme yavaşlatmak gibi bir web sunucusu üzerinde yapmak. Bu tür bir şey, muhtemelen bir tür iş kuyruğu kullanılarak ayrı bir sunucuda yapılmalıdır.
Başka ağ kaynaklarına erişmeniz gerekiyorsa, örneğin birkaç farklı web hizmetini çağırmanız gerekiyorsa, bir HTTP isteğini işleme bağlamında çok iş parçacığına yönelik meşru bir senaryo olabilir. Bunu tek bir thrad'da yaparsanız, her çağrının sırayla bitmesini beklemeniz gerekir. Ancak birden fazla iş parçacığı kullanırsanız, toplam bekleme süresi yalnızca en yavaş tek aramanın gecikmesidir.
Concurrency Utilities
.