Bir arka uç mühendisi olarak, verileri eşzamansız olarak işlemek için durumlarla karşılaşıyoruz. Bugün Java’da nasıl yapıldığını ve bunu yapmanın çeşitli yollarını görelim.

Thread

Java eşzamanlılığının çok temel ancak çok güçlü bileşeni, Thread. Java İş Parçacığı, aslında İşletim Sisteminin İş Parçacığı ile ilişkilidir. oluşturmanın en temel yolu Thread genişleterek ve geçersiz kılarak run :

İş parçacığının başlatılması, run() çağrılacak.
Sorabilirsin; evet, Thread geçersiz kılınabilecek tonlarca başka yönteme sahiptir:

  • Çoğu durumda, iş parçacığının diğer yöntemlerini geçersiz kılmak istemiyoruz.
  • Uzattığımızda Thread Java birden çok kalıtımı desteklemediğinden, genişleyen sınıf daha fazla genişleme yeteneğini kaybeder.
  • Uzattığımızda her iş parçacığının kendi nesnesi vardır ve tonlarca varken bellek sağlığı için iyi değildir. Objects of the extended Thread oluşturuldu.

Java, Runnable arabirimiyle bu sorunları giderir. Aslında, Thread Runnable alan aşırı yüklenmiş bir yönteme sahiptir.

Runnable

Runnable yalnızca bir yöntemi olan bir arabirimdir: run(). Evet, Runnable işlevsel bir arabirimdir ve örneği lambda işleviyle oluşturulabilir. Yine de bunu yapmanın kolay bir yolu; karmaşık şeyler için, onu uygulamak isteyebiliriz. Buradaki farkı görün. Her şey gereksinimle ilgili:

Runnable’ın bir run(), bu bir Thread değil, Thread tarafından kontrol edilene (geçilen) kadar sadece bir Java sınıfıdır. İş parçacığının başlangıcı, çalıştırılabilir nesnenin run() çağrılacak.

Evet, Java bunu 1.5 sürümünde çözdü ve Callable.

Callable<V>

Callable genel bir arayüzdür. Neden? Niye? Genel olarak bu komutu çalıştırmak için dönüş değerinin bu komutunu çalıştırın. Callable çok işlevsel bir arayüzdür ve call() tek yöntemdir, İstisna oluşturan ve genel olarak bu komut değerini çalıştıran argümansız bir yöntemdir.

Uygulanabilir Callable, Runnable’a çok benzer:

Buraya bakın, çağrı verileri işler ve yürütme sonrasında toplanabilecek bir değer döndürür. Ama onu çağırmak arasında büyük bir fark var mı? Kullanırız ExecutorService çağırmak ve Future sonucu tutmak için. Neden hakkında konuşalım.

Gördüğünüz gibi, Threads (Çalıştırılabilir veya Çağrılabilir) oluşturma ve çalıştırma konusunda kontrollü bir davranış yoktur. Her biri işletim sisteminin iş parçacıklarıyla ilişkili olduğu için aynı anda çalışan iş parçacıklarının sayısını kontrol etmek isteyebiliriz. Çalıştırdığımız iş parçacığı sayısı, mevcut CPU çekirdeği sayısından daha az olmalıdır. Hep birlikte, Java tarafından çözer ExecutorService arayüz.
Yukarıda bilgilendirici bir makale var Java’da Zaman Uyumsuz Programlama: Bölüm I.
Yukarıda paylaştığımız talimatlarla ilgili herhangi bir sorunuz olması durumunda, yorumlar bölümünden bizimle iletişime geçmekten çekinmeyin.