Apa itu Semaphore di Java & Bagaimana Cara Menggunakannya?

Diterbitkan: 2022-05-26

Sun Microsystems pada tahun 1995 membawa Java kepada kami, yang merupakan bahasa pemrograman yang kolaboratif, kelas dan bergantung pada objek serta platform komputer. Sejumlah besar program dan situs web tidak akan beroperasi kecuali Anda telah menginstal Java, dan lebih banyak lagi yang sedang dikembangkan setiap hari. Java dipasarkan dan dipuji karena kecepatan, keamanan, dan keandalannya yang cepat. Ini adalah bahasa komputer yang dibuat khusus untuk digunakan di dunia Internet yang tersebar. Itu dibuat dengan mengingat desain bahasa pemrograman C++, tetapi lebih mudah digunakan dan menerapkan pendekatan pemrograman berorientasi objek.

Program PG eksekutif dalam pengembangan Perangkat Lunak mengajarkan Anda semua keterampilan yang dibutuhkan untuk unggul di Java.

Contoh Semafor:

var mutex bersama: semaphore = 1;

Proses saya

mulai

.

.

P(mutex);

jalankan CS;

V(mutex);

.

.

Akhir;

Daftar isi

Apa yang membuat Jawa menonjol?

Komunitas pengembang, arsitek, dan penggemar Java yang setia telah menguji, memoles, memperluas, dan memvalidasi Java. Meskipun akarnya hampir berumur dua dekade, Java telah berkembang dengan mantap selama bertahun-tahun.

Java dimaksudkan untuk memfasilitasi pengembangan portabel, program berkinerja tinggi untuk berbagai sistem komputer, sehingga mendukung gagasan penting yang mencakup aksesibilitas dan interaksi lintas platform. Bisnis dapat memberikan layanan tambahan, meningkatkan produktivitas pengguna akhir, komunikasi, dan kolaborasi, dan secara drastis memotong biaya aplikasi perusahaan dan konsumen dengan membuatnya tersedia di berbagai pengaturan.

Apa itu Semaphore di Jawa?

Semaphore menggunakan penghitung untuk mengatur akses ke sumber daya bersama. Akses diizinkan jika penghitung lebih besar dari nol. Jika nilainya 0, akses ditolak. Penghitung menghitung izin yang menyediakan akses ke sumber daya bersama. Akibatnya, untuk mengakses sumber daya, utas harus terlebih dahulu mendapatkan izin dari semaphore.

Bagaimana cara kerjanya?

Umumnya, saat menggunakan semaphore, utas yang mencoba mengakses sumber daya bersama mencoba mendapatkan izin. Jika jumlah semaphore lebih besar dari nol, utas memperoleh izin, menyebabkan jumlah semaphore menurun. Jika tidak, utas akan dihentikan sampai izin diperoleh.

Ketika utas tidak lagi membutuhkan akses ke sumber daya bersama, ia melepaskan izin, menyebabkan jumlah semaphore meningkat. Jika utas lain menunggu izin, utas itu akan mendapatkannya pada saat itu.

Jenis Semaphore

Ada empat jenis Semaphore di java. Mereka adalah sebagai berikut:

Semafor biner :

Semaphore biner hanya menerima 0 dan 1 sebagai nilai dan digunakan untuk membuat pengecualian bersama dan menyinkronkan aktivitas bersamaan.

Contoh Semaphore Biner:

Kelas publik BinarySemaphoreContoh

{

boolean pribadi terkunci = false;

BinarySemaphore (inisial int)

{

terkunci = (awal == 0);

}

publik yang disinkronkan void waitForNotify() melempar InterruptedException

{

sementara (terkunci)

{

tunggu();

}

terkunci = benar;

}

publik disinkronkan batal notifyToWakeup()

{

jika (terkunci)

{

memberitahukan();

}

terkunci = salah;

}

}

Baca Artikel Populer kami yang terkait dengan Pengembangan Perangkat Lunak

Bagaimana Menerapkan Abstraksi Data di Jawa? Apa itu Kelas Dalam di Jawa? Java Identifiers: Definisi, Sintaks, dan Contoh
Memahami Enkapsulasi dalam OOPS dengan Contoh Argumen Baris Perintah di C Dijelaskan 10 Fitur & Karakteristik Terbaik Cloud Computing di tahun 2022
Polimorfisme di Jawa: Konsep, Jenis, Karakteristik & Contoh Paket di Java & Bagaimana Cara Menggunakannya? Tutorial Git Untuk Pemula: Belajar Git dari Awal

Menghitung semafor :

Pada setiap saat, nilai dari menghitung semaphore mewakili jumlah maksimum proses yang dapat mengakses area kritis pada waktu yang sama.

Contoh menghitung semaphore:

Kelas publik MenghitungSemaphoreContoh

{

sinyal int pribadi = 0;

pengambilan batal publik yang disinkronkan ()

{

this.sinyal++;

ini.beritahu();

}

rilis batal yang disinkronkan publik () melempar InterruptedException

{

while(ini.sinyal == 0)

tunggu();

this.signal–;

}

}

Semafor berjangka waktu:

Semafor berjangka waktu memungkinkan utas untuk berjalan selama waktu yang ditentukan. Setelah jangka waktu tertentu, pengatur waktu akan diatur ulang dan semua izin lainnya dilepaskan.

Contoh semaphore berjangka waktu:

kelas TimedSemaphoresContoh

{

semaphore TimedSemaphore pribadi;

TimedSemaphoreExample(periode panjang, int slotLimit)

{

semaphore = new TimedSemaphore(titik, TimeUnit.SECONDS, slotLimit);

}

boolean cobaTambah()

{

kembali semaphore.tryAcquire();

}

int slot yang tersedia()

{

kembali semaphore.getAvailablePermits();

}

}

Semafor berbatas :

Kami dapat mengatur batas batas atas menggunakan semaphore terbatas. Ini digunakan sebagai pengganti semaphore karena mereka tidak memiliki nilai batas atas. Nilai batas atas mewakili jumlah maksimum sinyal yang dapat disimpan.

Contoh Bounded semaphore :

kelas publik BoundedSemaphoresContoh

{

sinyal int pribadi = 0;

pribadi int terikat = 0;

Public BoundedSemaphoreexample(int upperBound)

{

this.bound = batas atas;

}

public void disinkronkan take() melempar InterruptedException

{

while(this.signals == terikat)

tunggu();

this.signals++;

this.notify++;

}

rilis tersinkronisasi batal publik () melempar InterruptedException

{

while(ini.sinyal == 0)

tunggu();

this.signals–;

}

}

Jelajahi Kursus Rekayasa Perangkat Lunak Populer kami

TL. Tidak Program Pengembangan Perangkat Lunak
1 Master of Science dalam Ilmu Komputer dari LJMU & IIITB Program Sertifikat Keamanan Siber CTME Caltech
2 Bootcamp Pengembangan Tumpukan Penuh Program PG di Blockchain
3 Program Pascasarjana Eksekutif dalam Pengembangan Perangkat Lunak - Spesialisasi dalam DevOps Lihat semua Kursus Rekayasa Perangkat Lunak

Karakteristik:

Semaphore memiliki ciri-ciri sebagai berikut:

  • Ini memungkinkan utas untuk berkomunikasi satu sama lain.
  • Ini mengurangi tingkat sinkron. Akibatnya, ia menyediakan metode sinkronisasi tingkat rendah.
  • Tidak ada nilai negatif di semaphore. Ini memiliki nilai yang bisa lebih besar dari atau sama dengan nol.
  • Kita dapat mengimplementasikan semaphore menggunakan operasi uji dan menyela dan menjalankannya menggunakan deskriptor file.

Pro dan kontra dari Semaphore:

Keuntungan:

  1. Ini memungkinkan banyak utas untuk mencapai bagian vital.
  2. Semaphore adalah mesin-agnostik.
  3. Semaphore diimplementasikan dalam kode mesin-independen mikrokernel.
  4. Beberapa proses tidak diizinkan untuk mengakses bagian penting.
  5. Tidak ada pemborosan waktu proses atau sumber daya karena selalu ada antrian yang sibuk di semaphore.
  6. Mereka adalah mesin-independen dan karena itu harus dijalankan dalam kode mesin-independen mikrokernel.
  7. Mereka memungkinkan manajemen sumber daya yang mudah beradaptasi.

Kekurangan:

  1. Pembalikan prioritas adalah salah satu batasan paling signifikan dari semaphore.
  2. Sistem operasi harus melacak semua panggilan tunggu dan sinyal semaphore.
  3. Penggunaannya tidak pernah diamanatkan, tetapi hanya oleh tradisi.
  4. Tindakan Wait and Signal harus dilakukan dengan benar untuk menghindari deadlock di semaphore.
  5. Karena pemrograman semaphore rumit, ada kemungkinan bahwa pengecualian bersama tidak dapat dicapai.
  6. Ini juga bukan strategi realistis untuk aplikasi skala besar karena mengakibatkan hilangnya modularitas.
  7. Semaphore lebih rentan terhadap kesalahan pemrograman.
  8. Kesalahan pemrograman dapat mengakibatkan kebuntuan atau pelanggaran pengecualian bersama.

Bagaimana cara menggunakan Semaphore sebagai Kunci?

Semaphore dapat digunakan sebagai Lock di Java. Ini menandakan bahwa itu membatasi akses ke sumber daya. Untuk memperoleh kunci, setiap utas yang ingin mengakses sumber daya yang dikunci harus terlebih dahulu memanggil fungsi memperoleh(). Setelah menyelesaikan pekerjaan, utas harus melepaskan kunci dengan menjalankan fungsi release(). Ingatlah bahwa batas atas harus ditetapkan ke 1. Kursus PG eksekutif dalam pengembangan tumpukan penuh akan membantu Anda menguasai semua keterampilan ini.

Ringkasan

Memiliki gagasan yang jelas tentang bahasa pemrograman seperti Java sangat penting untuk karir yang cerah sebagai pengembang perangkat lunak. upGrad menyediakan beberapa kursus yang mungkin memberi Anda kesempatan yang tepat untuk karier yang menjanjikan. Spesialisasi dalam pengembangan Full-stack dari Purude University di upGrad akan mengajarkan Anda semua keterampilan yang Anda butuhkan untuk berkembang di bidang pengembangan perangkat lunak.

Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Mengapa kita membutuhkan Semaphore di Java?

Semaphore adalah variabel yang digunakan untuk sinkronisasi proses untuk mengelola proses bersamaan. Ini juga mencegah masalah balapan dengan mengontrol akses ke sumber daya bersama oleh beberapa proses bersamaan.

Mengapa kita perlu Menghitung Semaphore?

Semaphore sering digunakan untuk mengoordinasikan akses sumber daya, dengan jumlah semaphore diatur ke daftar total sumber daya. Ketika sumber daya diberikan atau ditambahkan, utas secara atom meningkatkan jumlah, dan ketika sumber daya ditarik, utas secara atom mengurangi jumlah.

Mengapa Semaphore dikenal sebagai alat sinkronisasi?

Semaphore pada dasarnya adalah variabel integer yang dibagikan oleh banyak utas. Variabel ini digunakan dalam lingkungan multiprocessing untuk mengatasi masalah bagian kritis dan membangun sinkronisasi proses. Ini kadang-kadang disebut sebagai kunci mutex.

Apa itu pengembangan tumpukan penuh?

Pengembangan tumpukan penuh adalah pembuatan komponen ujung depan (sisi klien) dan ujung belakang (sisi server) dari aplikasi web. Pengembang web tumpukan penuh dapat membuat aplikasi dan situs web online lengkap. Mereka bertanggung jawab atas frontend, backend, database, dan debugging aplikasi atau situs online.