Java'da Semafor Nedir ve Nasıl Kullanılır?

Yayınlanan: 2022-05-26

1995 yılında Sun Microsystems, işbirlikçi, sınıf ve nesne bağımlı bir programlama dili ve bir bilgisayar platformu olan Java'yı bize getirdi. Java'yı yüklemediğiniz sürece çok sayıda program ve web sitesi çalışmayacaktır ve her gün daha fazlası geliştirilmektedir. Java, hızlı hızı, güvenliği ve güvenilirliği nedeniyle pazarlanmakta ve övülmektedir. İnternetin dağınık dünyasında kullanılmak üzere özel olarak oluşturulmuş bir bilgisayar dilidir. C++ programlama dilinin tasarımı göz önünde bulundurularak yapılmıştır, ancak kullanımı daha kolaydır ve nesne yönelimli bir programlama yaklaşımını uygular.

Yazılım geliştirmede bir yönetici PG programı size Java'da mükemmel olmak için gereken tüm becerileri tam olarak öğretir.

Bir Semafor Örneği:

Paylaşılan var mutex: semafor = 1;

süreç i

başlamak

.

.

P(mutex);

CS'yi yürütmek;

V(mutex);

.

.

Son;

İçindekiler

Java'yı öne çıkaran nedir?

Kendini adamış bir Java geliştiricileri, mimarları ve meraklıları topluluğu Java'yı test etti, geliştirdi, genişletti ve doğruladı. Neredeyse yirmi yıllık köklerine rağmen, Java yıllar boyunca istikrarlı bir şekilde gelişti.

Java, çok çeşitli bilgisayar sistemleri için taşınabilir, yüksek performanslı programların geliştirilmesini kolaylaştırmayı, dolayısıyla erişilebilirlik ve platformlar arası etkileşimi kapsayan temel kavramları desteklemeyi amaçlamaktadır. İşletmeler ek hizmetler sunabilir, son kullanıcı üretkenliğini, iletişimi ve işbirliğini artırabilir ve bunları heterojen ortamlarda kullanılabilir hale getirerek kurumsal ve tüketici uygulamalarının maliyetini önemli ölçüde azaltabilir.

Java'da Semafor nedir?

Bir semafor, paylaşılan bir kaynağa erişimi düzenlemek için bir sayaç kullanır. Sayaç sıfırdan büyükse erişime izin verilir. Değer 0 ise erişim reddedilir. Sayaç, paylaşılan kaynağa erişim sağlayan izinleri sayar. Sonuç olarak, kaynağa erişmek için bir iş parçacığının önce semafordan izin alması gerekir.

O nasıl çalışır?

Genellikle, bir semafor kullanırken, paylaşılan kaynağa erişmeye çalışan iş parçacığı izin almaya çalışır. Semafor sayısı sıfırdan büyükse, iş parçacığı izin alır ve semafor sayısının azalmasına neden olur. Aksi takdirde, izin alınana kadar iş parçacığı durdurulacaktır.

İş parçacığı artık paylaşılan kaynağa erişim gerektirmediğinde, izni serbest bırakarak semafor sayısının artmasına neden olur. Başka bir iş parçacığı izin bekliyorsa, o iş parçacığı o anda bir tane alır.

Semafor Türleri

Java'da dört tür Semafor vardır. Bunlar aşağıdaki gibidir:

İkili semafor :

İkili semafor, yalnızca 0 ve 1'i değer olarak kabul eder ve karşılıklı dışlama oluşturmak ve eşzamanlı etkinlikleri senkronize etmek için kullanılır.

İkili Semafor Örneği:

public class BinarySemaphoreÖrnek

{

özel boole kilitli = yanlış;

BinarySemaphore(int başlangıç)

{

kilitli = (başlangıç ​​== 0);

}

genel senkronize geçersiz waitForNotify() InterruptedException'ı atar

{

süre (kilitli)

{

Bekle();

}

kilitli = doğru;

}

genel senkronize geçersiz notifyToWakeup()

{

eğer (kilitli)

{

bildir();

}

kilitli = yanlış;

}

}

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çıklaması 2022'de Bulut Bilişimin En Önemli 10 Özelliği ve Özelliği
Java'da Polimorfizm: Kavramlar, Türler, Karakteristikler ve Örnekler Java'da Paketler ve Nasıl Kullanılır? Yeni Başlayanlar İçin Git Eğitimi: Git'i Sıfırdan Öğrenin

Sayma semaforu :

Zamanın her anında, bir sayma semaforunun değeri, kritik alana aynı anda erişebilen maksimum işlem sayısını temsil eder.

Semafor sayma örneği:

public class SaymaSemaforÖrnek

{

özel int sinyali = 0;

genel senkronize geçersiz alma ()

{

this.signal++;

this.notify();

}

genel senkronize geçersiz sürüm () InterruptedException'ı atar

{

while(bu.sinyal == 0)

Bekle();

this.signal–;

}

}

Zamanlanmış Semafor:

Zamanlanmış semaforlar, bir iş parçacığının belirli bir süre boyunca çalışmasını sağlar. Belirli bir süre sonra zamanlayıcı sıfırlanır ve diğer tüm izinler serbest bırakılır.

Zamanlanmış bir semafor örneği:

class ZamanlıSemaforlarÖrnek

{

özel ZamanlıSemafor semaforu;

TimedSemaphoreExample(uzun dönem, int slotLimit)

{

semafor = new TimedSemaphore(dönem, TimeUnit.SECONDS, slotLimit);

}

boolean tryAdd()

{

semaphore.tryAcquire() döndür;

}

int kullanılabilirSlotlar()

{

semaphore.getAvailablePermits() döndür;

}

}

Sınırlı Semafor :

Sınırlı semaforlar kullanarak üst sınırı belirleyebiliriz. Üst sınır değeri olmadığı için semaforları saymak yerine kullanılır. Üst sınır değeri, depolanabilecek maksimum sinyal sayısını temsil eder.

Sınırlı semafor örneği :

public class SınırlıSemaforlarÖrnek

{

özel int sinyalleri = 0;

özel int sınır = 0;

public BoundedSemaphoreexample(int üstBound)

{

this.bound = üstBound;

}

public void senkronize edilmiş take() InterruptedException'ı atar

{

while(this.signals == bağlı)

Bekle();

this.signals++;

this.notify++;

}

public void senkronize yayın() InterruptedException'ı atar

{

while(bu.sinyal == 0)

Bekle();

this.signals–;

}

}

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

SL. Numara Yazılım Geliştirme Programları
1 LJMU ve IIITB'den Bilgisayar Bilimleri Yüksek Lisansı Caltech CTME Siber Güvenlik Sertifika Programı
2 Tam Yığın Geliştirme Eğitim Kampı Blockchain'de PG Programı
3 Yazılım Geliştirmede Yönetici Yüksek Lisans Programı - DevOps'ta Uzmanlık Tüm Yazılım Mühendisliği Kurslarını Görüntüle

Özellikler:

Bir semafor aşağıdaki özelliklere sahiptir:

  • İş parçacıklarının birbirleriyle iletişim kurmasını sağlar.
  • Senkron derecesini azaltır. Sonuç olarak, düşük seviyeli bir senkronizasyon yöntemi sağlar.
  • Semaforda negatif değer yoktur. Sıfırdan büyük veya sıfıra eşit olabilen bir değere sahiptir.
  • Test işlemini kullanarak semafor uygulayabilir ve dosya tanımlayıcıları kullanarak kesip çalıştırabiliriz.

Semaforların artıları ve eksileri:

Avantajlar:

  1. Birçok ipliğin hayati kısma ulaşmasını sağlar.
  2. Semaforlar makineden bağımsızdır.
  3. Semaforlar, mikro çekirdeğin makineden bağımsız kodunda uygulanır.
  4. Önemli bölüme birden fazla işlemin erişmesine izin verilmez.
  5. Semaforda her zaman yoğun bir bekleyiş olduğu için işlem zamanı veya kaynak israfı olmaz.
  6. Bunlar makineden bağımsızdır ve bu nedenle mikro çekirdeğin makineden bağımsız kodunda çalıştırılmalıdır.
  7. Uyarlanabilir kaynak yönetimi sağlarlar.

Dezavantajları:

  1. Öncelik ters çevirme, bir semaforun en önemli kısıtlamalarından biridir.
  2. İşletim sistemi tüm bekleme ve sinyal semafor çağrılarını takip etmelidir.
  3. Kullanımları asla zorunlu değildir, sadece geleneklere göredir.
  4. Semaforda kilitlenmeleri önlemek için Bekle ve Sinyal eylemleri doğru yapılmalıdır.
  5. Semafor programlama karmaşık olduğundan, karşılıklı dışlamanın sağlanamaması olasılığı vardır.
  6. Ayrıca, modülerlik kaybına neden olduğu için büyük ölçekli uygulamalar için gerçekçi bir strateji değildir.
  7. Semafor, programlama hatalarına karşı daha hassastır.
  8. Bir programlama hatası, kilitlenmeye veya karşılıklı dışlamanın ihlaline neden olabilir.

Semafor Kilit Olarak Nasıl Kullanılır?

Java'da bir semafor Kilit olarak kullanılabilir. Kaynağa erişimi kısıtladığını belirtir. Kilidi elde etmek için, kilitli kaynağa erişmek isteyen herhangi bir iş parçacığı, önce edinme() işlevini çağırmalıdır. İşi tamamladıktan sonra iş parçacığı, release() işlevini çağırarak kilidi serbest bırakmalıdır. Üst sınırın 1 olarak ayarlanması gerektiğini unutmayın . Tam kapsamlı geliştirmede bir yönetici PG kursu, tüm bu becerilerde ustalaşmanıza yardımcı olacaktır.

Özet

Java gibi programlama dilleri hakkında net bir fikre sahip olmak, bir yazılım geliştiricisi olarak parlak bir kariyer için çok önemlidir. upGrad , gelecek vaat eden bir kariyer için size doğru vuruşu verebilecek birkaç kurs sunar. UpGrad'daki Purude University'den Full-stack geliştirmede bir Uzmanlık, size yazılım geliştirme alanında gelişmek için ihtiyaç duyduğunuz tüm becerileri öğretecektir.

Dünyanın En İyi Üniversitelerinden Online 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.

Java'da neden Semafor'a ihtiyacımız var?

Semafor, eşzamanlı süreçleri yönetmek için süreç senkronizasyonu için kullanılan bir değişkendir. Aynı zamanda birkaç eşzamanlı işlem tarafından paylaşılan bir kaynağa erişimi kontrol ederek bir yarış sorununu da önler.

Neden Sayma Semaforuna ihtiyacımız var?

Semaforlar genellikle kaynak erişimini koordine etmek için kullanılır ve semafor sayısı toplam kaynaklar listesine ayarlanır. Kaynaklar verildiğinde veya eklendiğinde, diziler sayıyı atomik olarak artırır ve kaynaklar geri çekildiğinde, ileti dizileri sayısı atomik olarak azaltır.

Semafor neden bir senkronizasyon aracı olarak bilinir?

Semafor aslında birçok iş parçacığı tarafından paylaşılan bir tamsayı değişkenidir. Bu değişken, kritik bölüm sorununun üstesinden gelmek ve süreç senkronizasyonunu sağlamak için çoklu işlem ortamında kullanılır. Bu bazen bir muteks kilidi olarak adlandırılır.

Tam yığın geliştirme nedir?

Tam yığın geliştirme, bir web uygulamasının hem ön uç (istemci tarafı) hem de arka uç (sunucu tarafı) bileşenlerinin oluşturulmasıdır. Tam yığın web geliştiricileri, tam teşekküllü çevrimiçi uygulamalar ve web siteleri oluşturabilir. Çevrimiçi uygulamaların veya web sitelerinin ön uç, arka uç, veritabanı ve hata ayıklamasından sorumludurlar.