thread sleep thread sleep method java with examples
Bu Eğitimde, Java'da Thread Sleep () Metodunu tartışacağız. Thread.Sleep () yönteminin Örnekler yardımıyla nasıl çalıştığını göreceğiz:
java.lang.Thread.sleep (uzun milisaniye) yöntem, şu anda çalışan iş parçacığını uyku moduna geçiren Thread sınıfı tarafından sağlanan yöntemdir. Uyku zamanını uyku yönteminin bir argümanı olarak belirleyeceğiz.
=> Java Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Ne öğreneceksin:
Java'da İş Parçacığı Uyku () Yöntemi
Java'nın Thread sınıfı, uyku yönteminin iki çeşidini sağlar.
Sleep () yönteminin her iki varyantının prototipi aşağıda açıklanmaktadır.
# 1) Uyku Yöntemi Varyantı # 1
Prototip: public static void sleep (long millis) InterruptedException oluşturur
Parametreler: milis => iş parçacığının uyuduğu milisaniye cinsinden süre.
Geri dönüş değeri: geçersiz
Atar:
- IllegalArgumentException => milis negatifse
- InterruptedException => başka herhangi bir iş parçacığı mevcut iş parçacığını kesintiye uğratırsa. Bu istisna oluştuğunda, iş parçacığının kesintiye uğramış durumu temizlenir.
Açıklama: Uyku yönteminin bu varyasyonu, geçerli iş parçacığını uyku moduna geçirir veya belirli bir milisaniye sayısı için yürütmeyi geçici olarak durdurur (yöntem bağımsız değişkeninde sağlanır). Bununla birlikte, uyurken, iş parçacığı monitörü kaybetmez veya sahipliği kilitlemez.
# 2) Uyku Yöntemi Varyantı # 2
Prototip: genel statik boşluk uyku (uzun milis, int nano) InterruptdException atar
Parametreler:
5 üst düzey programlama dili örneği
- milis => iş parçacığının uyuması gereken milisaniye cinsinden süre.
- nanos => iş parçacığının uyuyabileceği ek nanosaniyeler. Aralık 0 - 999999'dur.
Geri dönüş değeri: geçersiz
Atar:
- IllegalArgumentException => milis değeri negatifse veya aralık dışındaysa nanos değeri.
- InterruptedException => başka herhangi bir iş parçacığı mevcut iş parçacığını kesintiye uğratırsa. İş parçacığının kesintiye uğramış durumu, bu istisna oluştuğunda silinir.
Açıklama: Uyku yönteminin bu varyantı, iş parçacığının kendisini uykuya almasına veya verilen milisaniye sayısı boyunca yürütmesini geçici olarak durdurmasına neden olur. (bir yöntem çağrısındaki ilk argüman). Ayrıca, uyku için nanosaniye sayısını (bir yöntem çağrısındaki ikinci argüman) sağladı.
Belirtilen zamanın doğruluğunun ve kesinliğinin sistem zamanlayıcılarına ve programlayıcılara bağlı olduğunu unutmayın. İş parçacığı uyurken, kilidin veya monitörün sahipliği değişmez.
Thread.Sleep Metodu Çalışması
Bir iş parçacığı uyuduğunda veya askıya alındığında, bu zamanlayıcı tarafından yapılır. Thread.sleep () yöntemi, iş parçacığı zamanlayıcı ile iletişim kurar, böylece zamanlayıcı, o anda çalışan iş parçacığının belirli bir süre için durumu beklemek üzere değişmesine neden olabilir.
Belirtilen bu süre sona erdiğinde, iş parçacığının durumu 'çalıştırılabilir' olarak değiştirilir, böylece CPU'nun yürütmeye devam etmesini bekleyebilir.
Bu nedenle, iş parçacığının ne kadar süre uyuduğu, yönteme değil programlayıcıya bağlıdır. Zamanlayıcı, İşletim sisteminin bir parçası olduğundan, işletim sistemi mimarisi, iş parçacığının durum değişikliklerinde de rol oynar.
Artık Thread.sleep () yöntemini ayrıntılı olarak gördüğümüze göre, bu yöntemi kullanırken bazı noktaları aklımızda tutmalıyız.
İşaretçiler şunları içerir:
# 1) Thread.sleep () yöntemi her zaman mevcut evrenin yürütülmesini duraklatır.
#iki) İş parçacığının uyuduğu gerçek süre programlayıcılara ve sistem zamanlayıcılarına bağlıdır.
Örneğin, çok meşgul bir sistem için, iş parçacığının uyku süresi belirtilenden daha uzun olabilir, oysa çok meşgul olmayan sistem için, belirli bir zamana az ya da çok yakın olabilir.
# 3) İplik uyku halindeyken, uyumadan önce aldığı kilitleri veya monitörleri kaybetmez.
# 4) Uykuda olan mevcut iş parçacığı başka herhangi bir iş parçacığı tarafından kesilebilir. Bu durumda, 'InterruptedException' atılır.
Java'da Thread.sleep Örneği
Şimdi uyku yöntemini gösteren bir örneğe geçelim. Burada run () metoduna sahip bir thread sınıfımız var. Run () yönteminde 'Thread.sleep (1000)' adını veriyoruz. Daha sonra ana işlevde, bu iş parçacığının iki örneğini, yani iki iş parçacığını oluştururuz. Ardından konuları başlatıyoruz.
Çıktıda, her iki iş parçacığı da çalışırken, iş parçacıklarının birbiri ardına programlandığını, yani biri uyuduğunda diğerinin çalıştığını fark ettik.
Misal:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Çıktı:
Yazılımı güvenlik sorunları için test ederek elde edebileceğiniz en az iki şeyi listeleyin ve açıklayın.
Çıktıyı gözlemlediğimizde, Thread_0 ve Thread_1'in sırayla çalıştırıldığını görüyoruz.
Negatif Uyku Süresi Değeriyle Thread.sleep ()
Ardından, Thread.sleep () yönteminin başka bir örneğini gösterelim. Burada, negatif uyku süresi değerinin özel bir durumunu ele aldık. Program yukarıdaki programa benzer ancak sağlanan uyku süresi -500'dür.
Misal:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Çıktı:
Çıktıdan, yöntemin uyku zamanının negatif değeri kabul edilebilir olmadığından 'IllegalArgumentException' attığını görebiliriz.
Sıkça Sorulan Sorular
S # 1) Java'da iş parçacığı uykusu nasıl çalışır?
Cevap: Sleep (), iş parçacığı üzerinde milisaniye cinsinden belirli bir süre ile çağrıldığında, evre yürütmeyi durdurur. CPU'dan vazgeçer. Böylece, iş parçacığının uykuda olduğu süre boyunca, diğer iş parçacıkları CPU'yu kullanabilir.
S # 2) Java iş parçacığında verim () ve uyku () nedir?
Cevap: İş parçacığının sleep () yöntemi, iş parçacığının CPU'dan vazgeçmesine ve yürütmeyi durdurmasına neden olur. Bu iş parçacığı uyurken, diğer iş parçacıkları CPU'yu alır. Bu, planlayıcı tarafından yapılır.
Getiri () yöntemi ayrıca iş parçacığının çağrıldığında CPU kontrolünden vazgeçmesine neden olur, ancak sleep () yöntemi verim () ile karşılaştırıldığında daha kararlı davranış sergiler.
S # 3) Java iş parçacığının uykuya geçmesini nasıl durdurursunuz?
Cevap: Interrupt () yöntemini kullanarak Java iş parçacığının uyumasını durdururuz. Bekleyen veya uyuyan herhangi bir iş parçacığı, Thread sınıfının interrupt () yöntemi çağrılarak kesilebilir.
S # 4) Java'da bir iş parçacığı kapatabilir miyiz?
yazılım geliştirme yaşam döngüsünün aşamaları nelerdir
Cevap: Hayır, iş parçacığı Java'da öldürülmez. Bunun yerine, iş parçacığı Java'da durdurulur. İş parçacığı sonlandırılır ve ardından sorunsuz bir şekilde kapatılabilir. Değerlerdeki herhangi bir değişiklik için periyodik olarak kontrol edilen geçici bir boole alanı kullanırız, böylece iş parçacığını sonlandırabiliriz.
S # 5) Sleep () neden statik bir yöntemdir?
Cevap: İş parçacığını uyku moduna geçirmek için sleep () yöntemini çağırırken, onu her zaman Thread sınıfını kullanarak çağırırız.
Örneğin , Thread.sleep (1000);
Yukarıdaki çağrı, geçerli iş parçacığı bağlamında çalışır ve geçerli evreyi uyku moduna geçirir. Yöntemi asla belirli bir iş parçacığı örneği kullanarak çağırmayız. Dolayısıyla yöntem statiktir.
Sonuç
Bu eğiticide, Java'daki iş parçacıklarının sleep () yöntemini tartıştık. Sleep () yöntemi, yürütülmekte olan geçerli iş parçacığının, uyku yöntemine bağımsız değişken olarak sağlanan belirli bir süre boyunca yürütmeyi durdurmasına neden olur.
Sistem planlayıcısı, geçerli iş parçacığını bekleme durumuna getirmek için uyku yöntemiyle çalışır. İp uyku halindeyken edindiği kilitlere veya monitörlere sahip olmaya devam eder. Uyku yöntemine negatif bir uyku süresi değeri ilettiğimizde, 'IllegalArgumentException' atılır.
Sleep () yöntemine geçerli bir uyku süresi değeri ilettiğimizde, diğer iş parçacıkları mevcut iş parçacığı uyurken yürütme sırasını alır.
=> Java Eğitim Öğreticilerinin A-Z'sini Burada Görmek İçin Burayı Kontrol Edin.
Önerilen Kaynaklar
- Java'da Çoklu Okuma - Örneklerle Eğitim
- Örneklerle C ++ 'da Çoklu Okuma
- Java Senkronize Edildi: Java'da İş Parçacığı Senkronizasyonu Nedir?
- Yöntemler ve Yaşam Döngüsü İçeren Java Konuları
- Java Dize Eğitimi | Örneklerle Java Dize Yöntemleri
- Java toString Yöntemi Nasıl Kullanılır?
- TreeMap In Java - Java TreeMap Örnekleriyle Öğretici
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi