Türkçe karşılığı ‘eşzamanlılık’ anlamına gelir. Bu şekilde çevirdiğimizde Parallelism kavramı ile karıştırılması tabiki de en olası seçenek oluyor. Concurrency birden fazla aritmetik veya mantıksal işlemin yapılması durumudur. Tek ve aynı zamanda birden fazla işi paralel yapma durumu ise Parallelism’ dir.
Daha açıklayıcı olmak gerekirse concurrency , tek işlem birimini kullanarak sistemin yanıt süresini azaltmak için kullanılan bir yaklaşımdır. Concurrency yanılsaması yaratır, ancak aslında bir görevin parçaları paralel olarak işlenmez, ancak uygulamanın içinde aynı anda birden fazla görev işlenir. Devam etmeye başlamadan önce bir görevi tamamen bitirmez.
Concurrency , merkezi işlem birimi (CPU) üzerindeki süreçlerin serpiştirilerek çalışması veya başka bir deyişle içerik değiştirme ile sağlanır. Paralel işleme gibi bir mantık. Bir seferde bitirilen iş miktarını artırır.
Yukarıdaki şekilde de görüldüğü gibi aynı anda ilerleyen birden fazla görev olduğunu görebiliriz. Bu şekil concurrency gösterir çünkü concurrency, aynı anda pek çok şeyle ilgilenen tekniktir.
Parallelism kavramı ise görevlerin görünüşte eşzamanlı veya paralel olarak işlenen daha küçük alt görevlere bölündüğü bir uygulama ile ilgilidir. Birden çok işlemci kullanarak sistemin verimini ve hesaplama hızını artırmak için kullanılır. Tek sıralı CPU'ların birçok şeyi aynı anda "görünüşte" yapmasını sağlar.
Parallelism , merkezi işlem birimlerinin ve bir süreçteki girdi-çıktı görevlerinin, başka bir sürecin merkezi işlem birimi ve girdi-çıktı görevleri ile örtüşmesine yol açar. Concurrency ise, bir işlemin girdi-çıktı faaliyetleri başka bir işlemin CPU işlemiyle çakıştırılarak hız artırılır.
Yukarıdaki şekilde, görevlerin aynı anda veya paralel olarak işleyen daha küçük alt görevlere ayrıldığını görebiliriz. Bu şekil paralelliği, iş parçacıklarını aynı anda çalıştıran tekniği göstermektedir.
Özetle Concurrency , duraklatılabilen ve devam ettirilebilen iş parçacıkları veya iş birimleri olarak kolayca anlaşılabilir. Parallelism ise birden çok CPU üzerinde çalışan birden çok görevdir.
Java, yazılım uygulamalarının geliştirilmesinde yaygın olarak kullanılan popüler bir programlama dilidir. Java uygulamalarını geliştirirken göz önünde bulunduru
SOLID , yazılım tasarımlarını daha anlaşılır, esnek, sağlam ve sürdürülebilir hale getirmeyi amaçlayan 5 tasarım ilkesinin kısaltmasıdır. Java'da kullanımı anlatacağım.