logo

Java'da çoklu iş parçacığı

  1. Çoklu iş parçacığı
  2. Çoklu görev
  3. Süreç tabanlı çoklu görev
  4. İş parçacığı tabanlı çoklu görev
  5. Konu Nedir?

Çoklu iş parçacığı Java birden fazla iş parçacığının aynı anda yürütülmesi işlemidir.

Bir iş parçacığı, en küçük işlem birimi olan hafif bir alt işlemdir. Çoklu işlem ve çoklu iş parçacığı, her ikisi de çoklu görevi gerçekleştirmek için kullanılır.

ikili ağaç ve ikili arama ağacı arasındaki fark

Ancak, iş parçacıkları paylaşılan bir bellek alanı kullandığından, çoklu işleme yerine çoklu iş parçacığı kullanıyoruz. Ayrı bir hafıza alanı ayırmazlar, dolayısıyla hafızadan tasarruf sağlarlar ve iş parçacıkları arasında bağlam değişimi, süreçten daha az zaman alır.

Java Çoklu İş Parçacığı çoğunlukla oyunlarda, animasyonlarda vb. kullanılır.


Java Çoklu İş Parçacığının Avantajları

1) Bu kullanıcıyı engellemez çünkü iş parçacıkları bağımsızdır ve aynı anda birden fazla işlem gerçekleştirebilirsiniz.

2) Siz birçok işlemi bir arada gerçekleştirebildiği için zamandan tasarruf sağlar .

3) Konular bağımsız , böylece tek bir iş parçacığında bir istisna meydana gelirse diğer iş parçacıklarını etkilemez.


Çoklu görev

Çoklu görev, birden fazla görevi aynı anda yürütme sürecidir. CPU'yu kullanmak için çoklu görev kullanıyoruz. Çoklu görev iki şekilde gerçekleştirilebilir:

  • Süreç Tabanlı Çoklu Görev (Çoklu İşleme)
  • İş Parçacığı Tabanlı Çoklu Görev (Çoklu İş Parçacığı)

1) Süreç Tabanlı Çoklu Görev (Çoklu İşleme)

  • Her işlemin hafızada bir adresi vardır. Yani her proses ayrı bir hafıza alanı ayırır.
  • Bir süreç ağırdır.
  • Süreçler arasındaki iletişimin maliyeti yüksektir.
  • Bir işlemden diğerine geçiş, kaydetme ve yükleme için biraz zaman gerektirir kayıtlar , hafıza haritaları, güncelleme listeleri vb.

2) İş parçacığı tabanlı Çoklu Görev (Çok iş parçacıklı)

  • Konular aynı adres alanını paylaşır.
  • Bir iplik hafiftir.
  • İş parçacığı arasındaki iletişimin maliyeti düşüktür.

Not: Her iş parçacığı için en az bir işlem gereklidir.

Java'da Konu Nedir?

Bir iş parçacığı, en küçük işlem birimi olan hafif bir alt işlemdir. Bu ayrı bir yürütme yoludur.

Konular bağımsızdır. Bir iş parçacığında istisna meydana gelirse, bu durum diğer iş parçacıklarını etkilemez. Paylaşılan bir hafıza alanını kullanır.

Java Çoklu İş Parçacığı

Yukarıdaki şekilde gösterildiği gibi, işlemin içinde bir iş parçacığı yürütülür. Konular arasında bağlam geçişi vardır. İşletim sistemi içinde birden fazla işlem olabilir ve bir işlemin birden fazla iş parçacığı olabilir.

Not: Bir seferde yalnızca bir iş parçacığı yürütülür.

Java Konu sınıfı

Java şunları sağlar Konu sınıfı iş parçacığı programlamayı başarmak için. Konu sınıfı şunları sağlar inşaatçılar ve bir iş parçacığı üzerinde işlemler oluşturma ve gerçekleştirme yöntemleri. Konu sınıfı genişletiliyor Nesne sınıfı ve Runnable arayüzünü uygular.

Java Konu Yöntemleri

S.N. Değiştirici ve Tür Yöntem Tanım
1) geçersiz başlangıç() İş parçacığının yürütülmesini başlatmak için kullanılır.
2) geçersiz koşmak() Bir iş parçacığı için bir eylem gerçekleştirmek için kullanılır.
3) Statik boşluk uyumak() Belirli bir süre boyunca bir iş parçacığını uyutur.
4) Statik Konu currentThread() Şu anda yürütülen iş parçacığı nesnesine bir başvuru döndürür.
5) geçersiz katılmak() Bir iş parçacığının ölmesini bekler.
6) int getPriority() İş parçacığının önceliğini döndürür.
7) geçersiz setPriority() İş parçacığının önceliğini değiştirir.
8) Sicim getName() İş parçacığının adını döndürür.
9) geçersiz setName() Konunun adını değiştirir.
10) uzun getId() İş parçacığının kimliğini döndürür.
onbir) boolean yaşıyor() İpliğin canlı olup olmadığını test eder.
12) Statik boşluk teslim olmak() Şu anda yürütülen iş parçacığı nesnesinin duraklatılmasına ve diğer iş parçacıklarının geçici olarak yürütülmesine izin vermesine neden olur.
13) geçersiz askıya almak() İpliği askıya almak için kullanılır.
14) geçersiz sürdürmek() Askıya alınan ipliğin devam ettirilmesi için kullanılır.
on beş) geçersiz durmak() İpliği durdurmak için kullanılır.
16) geçersiz tahrip etmek() İş parçacığı grubunu ve tüm alt gruplarını yok etmek için kullanılır.
17) boolean isDaemon() İş parçacığının bir daemon iş parçacığı olup olmadığını test eder.
18) geçersiz setDaemon() İş parçacığını daemon veya kullanıcı iş parçacığı olarak işaretler.
19) geçersiz yarıda kesmek() İpliği keser.
yirmi) boolean kesintiye uğradı() İpliğin kesintiye uğrayıp uğramadığını test eder.
yirmi bir) statik boole kesintiye uğradı() Mevcut iş parçacığının kesintiye uğrayıp uğramadığını test eder.
22) statik dahili aktifSayı() Geçerli iş parçacığının iş parçacığı grubundaki etkin iş parçacıklarının sayısını döndürür.
23) geçersiz checkErişim() Şu anda çalışan iş parçacığının iş parçacığını değiştirme iznine sahip olup olmadığını belirler.
24) statik boole holdLock() Yalnızca geçerli iş parçacığının belirtilen nesnedeki monitör kilidini tutması durumunda true değerini döndürür.
25) Statik boşluk dumpStack() Geçerli iş parçacığının yığın izini standart hata akışına yazdırmak için kullanılır.
26) StackTraceElement[] getStackTrace() İş parçacığının yığın dökümünü temsil eden yığın izleme öğelerinin bir dizisini döndürür.
27) statik dahili numaralandırmak() Her aktif iş parçacığının iş parçacığı grubunu ve alt grubunu belirtilen diziye kopyalamak için kullanılır.
28) Konu.Durum getState() İş parçacığının durumunu döndürmek için kullanılır.
29) Konu Grubu getThreadGroup() Bu iş parçacığının ait olduğu iş parçacığı grubunu döndürmek için kullanılır
30) Sicim toString() İş parçacığının adı, önceliği ve iş parçacığı grubu dahil olmak üzere bu iş parçacığının dize temsilini döndürmek için kullanılır.
31) geçersiz bildir() Belirli bir nesneyi bekleyen yalnızca bir iş parçacığına bildirim vermek için kullanılır.
32) geçersiz notifyAll() Belirli bir nesnenin tüm bekleyen iş parçacıklarına bildirim vermek için kullanılır.
33) geçersiz setContextClassLoader() Konu için ClassLoader bağlamını ayarlar.
3.4) Sınıf Yükleyici getContextClassLoader() İş parçacığının ClassLoader içeriğini döndürür.
35) statik Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Yakalanmayan bir istisna nedeniyle bir iş parçacığı aniden sonlandırıldığında çağrılan varsayılan işleyiciyi döndürür.
36) Statik boşluk setDefaultUncaughtExceptionHandler() Yakalanmayan bir istisna nedeniyle bir iş parçacığı aniden sonlandırıldığında çağrılan varsayılan işleyiciyi ayarlar.
Biliyor musunuz
  • İki iş parçacığıyla iki görev nasıl gerçekleştirilir?
  • Anonim sınıfa göre çoklu iş parçacığı nasıl gerçekleştirilir?
  • İş Parçacığı Zamanlayıcı nedir ve önleyici planlama ile zaman dilimleme arasındaki fark nedir?
  • Bir konuyu iki kez başlatırsak ne olur?
  • Start() yöntemi yerine run() yöntemini çağırırsak ne olur?
  • join yönteminin amacı nedir?
  • Hiçbir kullanıcı iş parçacığı kalmamışsa JVM neden daemon iş parçacığını sonlandırıyor?
  • Kapatma kancası nedir?
  • Çöp toplama nedir?
  • finalize() yönteminin amacı nedir?
  • gc() yöntemi ne işe yarar?
  • Senkronizasyon nedir ve senkronizasyon neden kullanılır?
  • Senkronize yöntem ile senkronize blok arasındaki fark nedir?
  • Statik senkronizasyon gerçekleştirmenin iki yolu nedir?
  • Kilitlenme nedir ve ne zaman ortaya çıkabilir?
  • İş parçacıkları arası iletişim veya işbirliği nedir?
Çoklu İş Parçacığında Neler Öğreneceğiz?
  • Çoklu iş parçacığı
  • Bir Konunun Yaşam Döngüsü
  • Konu oluşturmanın iki yolu
  • Birden çok iş parçacığı tarafından birden çok görev nasıl gerçekleştirilir?
  • Konu Zamanlayıcı
  • Bir iplik uyuyor
  • Bir konuyu iki kere başlatabilir miyiz?
  • Start() yöntemi yerine run() yöntemini çağırırsak ne olur?
  • Bir konuya katılma
  • Bir iş parçacığının adlandırılması
  • Bir iş parçacığının önceliği
  • Daemon Konusu
  • Kapatma Kancası
  • Çöp toplama
  • Senkronize yöntemle senkronizasyon
  • Senkronize blok
  • Statik senkronizasyon
  • Kilitlenme
  • İş parçacıkları arası iletişim