- Çoklu iş parçacığı
- Çoklu görev
- Süreç tabanlı çoklu görev
- İş parçacığı tabanlı çoklu görev
- 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.
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. |
- İ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 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