Java'da İş Parçacığının Yaşam Döngüsü

Yayınlanan: 2023-01-27

İçindekiler

Java Konularının Temelleri:

Java'daki bir iş parçacığı, tek bir işlem içinde birden çok etkinliğin performansını kolaylaştırır. Hafif bir süreç olarak kabul edilir. Bir iş parçacığı, yürütülen ifadelerin bir dizisi olarak da tanımlanabilir. Java'daki her iş parçacığının kendi yığını, program sayacı ve yerel değişkenleri vardır. Java iş parçacıkları, iç içe geçmiş bir dizi yöntem çağrısı da olabilir. Bellek, işlem başına durum ve dosyalar iş parçacıkları tarafından paylaşılır.

Java'da iş parçacıklarının kullanımları:

    • Arka planda veya eşzamansız işleme yapmak için
    • GUI uygulamalarının hassasiyetini artırmak için
    • Çok işlemcili sistemlerin olumlu yanlarını uygulamak
    • Birden fazla olması durumunda programlama mantığını kolaylaştırmak için

Bir iş parçacığı çağrıldığında iki yürütme yolu vardır. İki yoldan biri iş parçacığı yürütmesi için kullanılır ve diğeri iş parçacığı çağrısından sonra gelen ifadeyi takip eder. Java'daki her iş parçacığının ayrı bir bellek alanı ve yığını vardır.

Java kodlarında thread kullanımı sırasında karşılaşılan risk faktörleri aşağıdaki gibidir.

  • İş parçacıklarının verileri tutarlı bir şekilde görüntülemek için ortak değişkenlere eriştiği durumlarda, iş parçacıkları arasında uygun koordinasyon gereklidir.
  • Programlarda aşırı kullanılırsa iş parçacıklarının performansı ve bakımı zorlaşır.

Java'da Konuların Yaşam Döngüsü:

Herhangi bir program yürütme anında, Java'daki iş parçacıkları aşağıda belirtilen durumlardan herhangi birinde bulunur.

  1. Yeni
  2. Engellendi
  3. çalıştırılabilir
  4. zamanlı bekleme
  5. Beklemek
  6. Sonlandırılmış

Java'da iş parçacığının Yaşam Döngüsünün ayrıntılı bir görünümü

Yeni Konu:

Yeni oluşturulan ileti dizisi 'Yeni' durumundadır. Bu durumda çalışmak için ilerletilmemiştir. Bir iş parçacığının kodunun yeni durumda yürütülmesi henüz gerçekleşmemiştir. Henüz çalışmadı.

Çalıştırılabilir durum:

Çalıştırılabilir durumdaki iş parçacıkları çalışmaya hazırdır. Bu durumdaki bir thread her an çalışmaya hazır olabilir veya halihazırda çalışıyor olabilir. İş parçacığı zamanlayıcı, iş parçacığının çalışması için zaman ayırma sorumluluğunu üstlenir. Çok iş parçacıklı bir programda her bir iş parçacığına belirli bir zaman atanır. Her bir iş parçacığı kısa bir süre çalışır ve ardından bir duraklamayla karşılaşır. CPU daha sonra diğer iş parçacıklarının çalışması için bir şans sağlamak üzere başka bir iş parçacığına bırakılır. Bu noktada, CPU'yu bekleyen çalışmaya hazır tüm thread'ler ve çalışmakta olan thread'ler çalıştırılabilir durumdadır.

Rekabette avantaj elde etmek için ücretsiz teknoloji kurslarımıza göz atın.

Popüler Yazılım Mühendisliği Kurslarımızı keşfedin

LJMU & IIITB'den Bilgisayar Bilimlerinde Bilim Ustası Caltech CTME Siber Güvenlik Sertifika Programı
Tam Yığın Geliştirme Eğitim Kampı Blockchain'de PG Programı
Tam Yığın Geliştirmede Yönetici PG Programı
Aşağıda Tüm Kurslarımızı Görüntüleyin
Yazılım Mühendisliği Kursları

Bekliyor / Engellendi durumu:

Bir iş parçacığı, geçici olarak çalışmadığında aşağıda belirtilen durumlardan herhangi birindedir.

  • Beklemek
  • Engellendi

G/Ç'nin tamamlanmasını bekleyen bir iş parçacığı bloke durumdadır. İş parçacığı zamanlayıcısının işlevi, engellenen veya bekleyen bir iş parçacığını yeniden etkinleştirerek yürütülmesini programlamaktır. Bu durumdaki herhangi bir iş parçacığının, çalıştırılabilir bir duruma dönüştürülene kadar yürütmeye devam etmesine izin verilmez. Blok veya bekleme durumundaki iş parçacıkları herhangi bir CPU döngüsü kullanmaz.

Bir iş parçacığı, bir kodun şu anda başka bir iş parçacığı tarafından korunan korumalı bölümüne erişmeye çalıştığında engellenmeye zorlanır. Zamanlayıcı, tüm iş parçacıkları için bölümün kilidi açıldığında, korunan bir bölüm için bekleyen iş parçacıklarından birini çalıştırılabilir bir duruma dönüştürür. Öte yandan, belirli bir koşulda diğer iş parçacığını beklerken bir iş parçacığı bekleme durumundadır. Bekleme durumundaki iş parçacıkları, bekleme için belirtilen koşul sağlandığında çalıştırılabilir duruma itilir. Şu anda çalışan bir iş parçacığı bekleme / bloke durumuna taşınırsa, iş parçacığı planlayıcısı çalıştırılabilir diziden başka bir iş parçacığını çalışacak şekilde zamanlar.

Süreli Bekleme:

Bir yöntem, zaman aşımı bağımsız değişkeniyle çağrıldığında, iş parçacığı zamanlanmış bir bekleme durumundadır. Bir iş parçacığı, belirtilen zaman aşımının tamamlanmasına veya bir bildirim alınana kadar bu durumda kalmaya devam eder. Örneğin, bir iş parçacığı, koşullu beklemeyi veya uykuyu başlatırsa, zamanlı bekleme durumuna kaydırılır.

Sonlandırılan durum:

İş parçacıklarının sonlandırılması aşağıdaki nedenlerden herhangi biri nedeniyle gerçekleşir.

  • İş parçacığı içindeki kod bölümlerinin yürütülmesi tamamlandığında iş parçacığının Normal çıkışı.
  • İşlenmeyen bir özel durum ve segmentasyon hatası gibi herhangi bir nadir hatalı olayın meydana gelmesi.

Sonlandırılmış durumdaki bir iş parçacığı herhangi bir CPU döngüsü tüketmez.

Dünyanın En İyi Üniversitelerinden Çevrimiçi Yazılım Geliştirme Kursları Öğrenin. Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

İsteğe Bağlı Yazılım Geliştirme Becerileri

JavaScript Kursları Temel Java Kursları Veri Yapıları Kursları
Node.js Kursları SQL Kursları Tam yığın geliştirme Kursları
NFT Kursları DevOps Kursları Büyük Veri Kursları
React.js Kursları Siber Güvenlik Kursları Bulut Bilişim Kursları
Veritabanı Tasarım Kursları Python Kursları Kripto Para Kursları

Java'da iş parçacığı durumlarının uygulanması:

Java'da bir iş parçacığının mevcut durumunu gerçekleştirmek için Thread.getState() yöntemini kullanırız. Java ayrıca bir iş parçacığının durumu için ENUM sabitlerinin tanımlandığı java.lang.Thread.State sınıfını da sunar. Detaylar aşağıdaki tabloda özetlenmiştir.

Sabit Tip beyanname Açıklama
Yeni genel statik final Thread.State YENİ Yeni oluşturulan ve henüz yürütmeye başlamamış olan iş parçacığının iş parçacığı durumudur.
çalıştırılabilir genel statik nihai Thread.State RUNNABLE Halihazırda çalışan bir iş parçacığının veya çalışmaya hazır durumda olan bir iş parçacığının durumunu açıklar.

Aynı iş parçacığı, Java Sanal makinesi için çalıştırılabilir durumda ve işlemci gibi diğer işletim sistemi kaynakları için bekleme durumunda olabilir.

Engellendi genel statik nihai Thread.State BLOCKED Monitör kilidini beklerken bloke edilen bir iş parçacığının durumunu açıklar. İzleme bloğu senkronize edilmiş bir yönteme/bloğa girene veya Object.wait()'i çağırdıktan sonra senkronize edilmiş metoda yeniden girene kadar aynı durumda kalır.
Beklemek genel statik nihai Thread.State BEKLİYOR Aşağıdaki yöntemlerden birinin çağrılması nedeniyle bekleyen bir iş parçacığının durumunu açıklar.

  1. Zaman aşımı olmadan Object.wait
  2. LockSupport.park
  3. Zaman aşımı olmadan Thread.join

Bekleme durumu, belirli bir görevin başka bir iş parçacığı tarafından tamamlanması nedeniyle olabilir.

zamanlı bekleme genel statik son Thread.State TIMED_WAITING Belirli bir süre bekleyen iş parçacığının durumudur. Aşağıdaki yöntemlerden herhangi birinin çağrılması, pozitif bekleme süresi atanmış bir iş parçacığının zamanlanmış bekleme durumuyla sonuçlanır.

  1. Thread.join zaman aşımı ile
  2. Zaman aşımı ile Object.wait
  3. LockSupport.partUntil
  4. LockSupport.parkNanos
Sonlandırılmış public static final Thread.State SONLANDIRILDI Kurucu kod deyimlerini yürütmeyi tamamlamış bir iş parçacığının durumudur.

İş parçacığı yeni oluşturulduğunda YENİ bir durumda kalır. .start() yöntemi bir iş parçacığında çağrıldığında, iş parçacığı zamanlayıcı tarafından Çalıştırılabilir durumuna taşınır. Bir iş parçacığı örneğinde join() yöntemi çağrıldığında, şu anda kod deyimini yürüten iş parçacığı bu iş parçacığının sonlanmasını bekleyecektir. Bu nedenle, son ifadenin konsolda yazdırılmasından önce, program tarafından 2. iş parçacığında birleştirme() işlevi çağrılır ve iş parçacığı 2 yürütmesini tamamlayıp Sonlandırılmış Duruma geçene kadar iş parçacığı1'i beklemede tutar. İş parçacığı1, iş parçacığı2'nin yürütmesinin tamamlanmasını beklediği için BEKLEME durumuna getirilir.

Yazılım Geliştirme ile ilgili Popüler Makalelerimizi okuyun

Java'da Veri Soyutlama Nasıl Uygulanır? Java'da İç Sınıf nedir? Java Tanımlayıcıları: Tanım, Sözdizimi ve Örnekler
OOPS'de Kapsüllemeyi Örneklerle Anlamak C'deki Komut Satırı Argümanları Açıklandı 2022'de Bulut Bilişimin En İyi 10 Özelliği ve Özelliği
Java'da Polimorfizm: Kavramlar, Türler, Özellikler ve Örnekler Java'da Paketler ve Nasıl Kullanılır? Yeni Başlayanlar İçin Git Eğitimi: Git'i Sıfırdan Öğrenin

Java programlarında iş parçacığı kullanmanın yararları ve sınırlamaları:

Java programlarında iş parçacığı kullanımının aşağıdaki faydaları vardır.

  • Kodu geliştirmek için harcanan sürede azalma
  • Azaltılmış bakım maliyetleri
  • Karmaşık uygulamaların gelişmiş performansı
  • Kullanıcı arayüzlerinin duyarlılığını artırma
  • Görevleri paralelleştirme
  • İş parçacıkları, sunucu uygulamalarında yüksek verimi ve kaynak kullanımını iyileştirmek için kullanılır.
  • CPU'nun tüm bilgi işlem kaynakları bir iş parçacığı tarafından kullanılamıyorsa, başka bir iş parçacığının çalıştırılması bunları meşgul edecektir.
  • Aynı veri kümesi birkaç iş parçacığı tarafından çalıştırılıyorsa önbellekleri paylaşılabilir. Bu, önbelleğin daha iyi kullanılmasına veya değerlerinin uyumlu hale getirilmesine yol açar.

Java programlarında iş parçacığı kullanmanın çeşitli sakıncaları vardır. Bunlardan bazıları aşağıda listelenmiştir.

  • Önbellekleri, çeviri arabelleklerini (TLB'ler) veya diğer herhangi bir donanım kaynağını paylaşırken birden çok iş parçacığı birbirini etkileyebilir.
  • Yalnızca tek bir iş parçacığı çalışırken bile bir iş parçacığının yürütme süresi iyileştirilemez. Ancak, yürütme süresinin bozulmasına izin verilir. Bunun nedeni, iş parçacığı değiştirme donanımının yerleştirilmesi için gereken ek işlem hattı aşamaları ve/veya daha yavaş frekanslar olabilir.
  • Çoklu işlemeye kıyasla hem işletim sistemlerinde hem de uygulama programlarında çok sayıda değişiklik yapılması gerekir çünkü donanım desteği çoklu kullanımda yazılıma daha fazla maruz kalır.

Java, full-stack yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 500 saatten fazla sıkı eğitim sunan upGrad & IIIT-B'nin Yazılım Geliştirme - Tam Yığın Geliştirme Uzmanlığı alanında Yönetici PG Programına göz atın. , 9'dan fazla proje ve ödevler, IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarda iş yardımı.

Bu makaleyi paylaşmak istermisiniz?

Geleceğin Kariyerine Hazırlanın

Yazılım Mühendisliği Yüksek Lisans Programına Şimdi Başvur