Java'da uyku ve bekleme arasındaki fark

Anahtar Fark - uyku vs bekleyin Java
 

Uyku ve bekleme, Java'da çoklu kullanım için kullanılan iki yöntemdir. Wait yöntemi Object sınıfından iken, sleep yöntemi Thread sınıfına aittir. temel fark Java'da uyku ve bekleme arasında, sleep, geçerli iş parçacığının, başka bir iş parçacığı nesne için bildir veya notifyAll yöntemini çağırıncaya kadar beklemesini sağlamak için wait yöntemi kullanılırken, belirtilen iş parçacığının belirtilen milisaniye boyunca yürütülmesini askıya almak için kullanılır..

İş parçacığı, işletim sistemindeki en küçük işlem birimidir. Bir program içindeki tek bir ardışık kontrol akışıdır. Dişler hafiftir. Çoklu iş parçacığı, aynı anda birden çok iş parçacığını çalıştırma mekanizmasıdır. Java gibi programlama dilleri çoklu okuma özelliğini destekler. Birden çok iş parçacığının aynı anda çalışmasına izin verdiği ve iş parçacıklarının birbirinden bağımsız olduğu için çoklu iş parçacığının avantajları vardır. Java'da çoklu kullanım için kullanılabilecek yöntemler vardır. İkisi uyku ve bekle.

İÇİNDEKİLER

1. Genel Bakış ve Temel Fark
2. Java'da uyku nedir
3. Java'da bekleme nedir
4. Java ile uyku ve bekleme arasındaki benzerlikler
5. Yan Yana Karşılaştırma - uyku ve Java'da Bekleme Tabular Formunda
6. Özet

Java'da uyku nedir?

Bir işletim sisteminde çalışan birden çok işlem vardır. Süreç, yürütülmekte olan bir programdır. Her işlem birden çok iş parçacığına sahip olabilir ve bu iş parçacıkları arasında bir bağlam değişikliği vardır. Java'da, bir iş parçacığı oluşturmanın iki yolu vardır. Yani thread sınıfını genişleterek ya da Runnable arabirimini uygulayarak. Thread sınıfı, bir iş parçacığında işlemler oluşturmak ve gerçekleştirmek için yapıcılara ve yöntemlere sahiptir. Thread sınıfı Object sınıfını genişletir ve Runnable arabirimini uygular. Runnable arabirimi, örnekleri bir iş parçacığı tarafından yürütülmesi amaçlanan herhangi bir sınıf tarafından uygulanmalıdır. İş parçacığı yürütüldüğünde, yürütülmesi gereken kod run yönteminin içine yazılır. Çalışması gereken iş parçacığı, iş parçacığı zamanlayıcısı tarafından seçilir. Tek bir işlemde yalnızca bir iş parçacığı çalışır.

Bir iplik birkaç aşamadan geçer. Thread sınıfının bir nesnesini oluşturduktan sonra, programcı start yöntemini çağırabilir. Bu yöntemi başlatmadan önce, iş parçacığının yeni durumda olduğu söylenir. İş parçacığı zamanlayıcı çalışacak bir iş parçacığı seçer. İş parçacığı henüz iş parçacığı zamanlayıcısı tarafından seçili değil, ancak başlatma yöntemi çağrılırsa, iş parçacığı çalıştırılabilir durumdadır. İş parçacığı zamanlayıcı yürütmek için iş parçacığı seçtikten sonra, çalışma durumuna geçer. İş parçacığı canlıysa ancak şu anda çalışmaya uygun değilse, çalıştırılamaz veya engellenmiş durumdadır. Çalışma yönteminin tamamlanmasından sonra, iş parçacığı sonlandırılmış duruma gider. Bunlar iplik ömrü döngüsünün ana aşamalarıdır.

İş parçacığı sınıfında farklı görevleri gerçekleştirmek için çeşitli yöntemler vardır. Uyku yöntemi, yöntemi belirli bir süre uyumak için kullanılır. Uyku yönteminin sözdizimi, genel geçersiz uyku (uzun milisaniye) InterruptedException özelliğidir. Şu anda yürütülen iş parçacığının belirtilen milisaniye boyunca geçici olarak yürütmeyi durdurmasına neden olur. Başka bir iş parçacığı geçerli iş parçacığını kesintiye uğratırsa, bu özel durum atıldığında geçerli iş parçacığının kesilmiş durumu temizlenir.

Şekil 01: Uyku Yöntemi ile Java Programı

Yukarıdaki programa göre, run yöntemi çalıştırılması gereken kodu içerir. Ana programda, SampleThread1 öğesinin iki nesnesi oluşturulur ve bunlarda başlatma yöntemleri çağrılır. Bu, kodu run yönteminin içinde çalıştırmaya izin verecektir. Bir seferde yalnızca bir iş parçacığı yürütülür. Konu ile. uyku (1000); ilk iş parçacığının 1000 milisaniye boyunca yürütmeyi sonlandırmasına izin verir. Bir iş parçacığı uyurken, iş parçacığı zamanlayıcısı diğer iş parçacığını alır.

Java'da bekleme nedir?

Birden çok iş parçacığı paylaşılan bir kaynağa erişebilir. Yanlış çıktı üretilmesine neden olabilir. İş parçacığı eşitlemesi, paylaşılan kaynağa erişmek için yalnızca bir iş parçacığı oluşturmak için kullanılabilir. Aşağıdaki gibi bir durum varsayalım. T1 ve t2 olarak iki iş parçacığı varsa, t1 değerleri Text1.txt adlı bir metin dosyasına kaydetmeye başlar. Bu değerler, t1 geri döndüğünde başka bir hesaplama için kullanılacaktır. T2, t1 dönmeden önce başlarsa, t2, t1 tarafından kaydedilen değerleri değiştirebilir. Bu, t1'in yanlış çıktı sağlamasına neden olabilir. Senkronizasyon yardımıyla, t1, Text1.txt dosyasını kullanmaya başladığında, bu dosya kilitlenebilir, bu nedenle yalnızca t1 tarafından erişilebilir. T2, o metin dosyasına erişmek için kilidi serbest bırakana kadar değiştiremez. Görev tamamlandığında t1 kilidi serbest bırakabilir. Kilit, monitör olarak da bilinir.

İplik senkronizasyonu, dişler arası iletişim ile sağlanabilir. Kritik bölüm, paylaşılan kaynaklara erişen bir kod bölümüdür. Dişler arası iletişimde, bir iş parçacığı kritik bölümünde çalışarak duraklatılır ve başka bir iş parçacığının yürütülecek aynı kritik bölüme girmesine izin verilir. Wait, notify ve notifyAll yöntemleri kullanılarak uygulanır. Object sınıfına aittirler. Wait yöntemi, geçerli iş parçacığının kilidi serbest bırakmasına ve başka bir iş parçacığı nesne için notify veya notifyAll yöntemini çağrıncaya kadar beklemesine izin vermek için kullanılır. Bildirme yöntemi, kilidi bekleyen tek bir iş parçacığını uyandırmak için kullanılır. Tüm kilit üzerinde bekleyen tüm evreleri uyandırır.

Şekil 02: Hesap Makinesi Sınıfı

Şekil 03: Ana Yöntem

Calculator sınıfı İş Parçacığını genişletir. Senkronize blok, run yönteminin içindedir. For loop and notify yöntemi, senkronize edilmiş bloğun içindedir. Ana yöntemin içinde, oluşturulmuş bir iş parçacığının bir örneği ve bu örnekte start yöntemi çağrılır. Ana yöntem, iş parçacığı bir bildirim verene kadar bekleyecektir. Programı yürütürken, ana yöntem çalıştırma yönteminin tamamının uygulanmasını bekler ve bildirme yöntemini bekler. Bildirme yöntemi çağrıldığında, ana yöntem beklemeyi durdurur ve kodun geri kalanını yürütmeye başlar. Hesap Makinesi iş parçacığı tamamlanana kadar ana bekliyor. Son olarak, toplamın sonucu yazdırılır.

Eşzamanlı blok yoksa ve ana yöntemin aşağıdaki gibi bir kodu varsa, diğer iş parçacığının tamamlanmasını beklemediği için çıktıyı sıfır olarak verir..

Hesap Makinesi t1 = yeni Hesap Makinesi ();

 t1. Başlat ();

System.out.println (t1.sum);

Java'da uyku ve bekleme arasındaki benzerlik nedir?

  • Hem uyku hem de bekleme, Java'da çoklu iş parçacığı uygularken kullanılabilecek yöntemlerdir

Java'da uyku ve bekleme arasındaki fark nedir?

uyku vs Java'da bekle

Uyku yöntemi, geçerli iş parçacığının, sistem zamanlayıcılarının ve zamanlayıcılarının kesinliği ve doğruluğuna bağlı olarak, belirtilen milisaniye boyunca yürütmeyi askıya almasına neden olur. Wait yöntemi, geçerli iş parçacığının başka bir iş parçacığı nesne için notify veya notifyAll yöntemini çağırıncaya kadar beklemesine neden olur.
 Kilit ile İlişkilendirme
Uyku yöntemi, senkronizasyon sırasında bir nesne üzerindeki kilidi serbest bırakmaz. Wait yöntemi senkronizasyon sırasında kilidi serbest bırakır.
Yürütme Yöntemi
Uyku yöntemi geçerli iş parçacığında yürütülür. Nesne üzerinde wait yöntemi çağrılır.
 İlişkili Sınıf
Uyku, Thread sınıfının bir yöntemidir. Wait, Object sınıfının bir yöntemidir.
tamamlama
Uyku süresi belirtilen süre dolduktan sonra tamamlanır. Wait yöntemi, notify veya notifyAll yöntemleri çağrılarak kesilir.

özet - uyumak vs beklemek Java

İşletim sisteminde çalışan birden çok işlem vardır. Her işlemin birden fazla iş parçacığı olabilir. İş parçacığı, bir işletim sistemindeki en küçük işlem birimidir. Java programlama dili çoklu okuma özelliğini destekler. Aynı anda birden çok iş parçacığını çalıştırmaya izin verir. Uyku ve bekleme, çoklu iş parçacığı uygularken kullanılabilecek iki yöntemdir. Java'da uyku ve bekleme arasındaki fark, uyku işleminin geçerli iş parçacığının belirtilen milisaniye boyunca yürütülmesini askıya almak için kullanılmasıdır. nesne yöntemi.

Referans:

1. “Java'da Konular Arası İletişim - Javatpoint.”. JavaTPoint. Burada mevcut
2. İç Konu Java Multithreading'de İletişim | Çekirdek Java Eğitimi | Studytonight. Burada mevcut