Sinkronisasi dan Kunci
Gunakan blok synchronized dan kunci eksplisit untuk mengoordinasikan akses ke sumber daya bersama.
Sinkronisasi dan Kunci adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.
Pendahuluan
Sinkronisasi mencegah kondisi balapan ketika beberapa utas mengakses data bersama.
synchronized
Kata kunci synchronized memastikan hanya satu utas pada satu waktu yang memasuki blok atau metode.
Kode: metode synchronized
Metode synchronized ini mencegah kondisi balapan saat menambah nilai penghitung.
public class Main {
private int count = 0;
public synchronized void increment() {
count++;
}
public static void main(String[] args) throws Exception {
Main obj = new Main();
Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
t1.start(); t2.start();
t1.join(); t2.join();
System.out.println("Count = " + obj.count);
}
}
Blok synchronized
Anda dapat menyinkronkan hanya bagian kritis, bukan seluruh metode, sehingga mengurangi perebutan akses.
Kode: blok synchronized
Blok synchronized hanya melindungi baris penambahan nilai, yang merupakan bagian kritis.
public class Main {
private int count = 0;
public void add() {
synchronized(this) {
count++;
}
}
public static void main(String[] args) throws Exception {
Main obj = new Main();
Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) obj.add(); });
Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) obj.add(); });
t1.start(); t2.start();
t1.join(); t2.join();
System.out.println("Count = " + obj.count);
}
}
Kode: ReentrantLock
ReentrantLock menyediakan penguncian eksplisit yang fleksibel, seperti tryLock() dan opsi keadilan.
import java.util.concurrent.locks.*;public class Main {
private int count = 0;
private Lock lock = new ReentrantLock();
public void increment() {
lock.lock();
try { count++; }
finally { lock.unlock(); }
}
public static void main(String[] args) throws Exception {
Main obj = new Main();
Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) obj.increment(); });
t1.start(); t2.start();
t1.join(); t2.join();
System.out.println("Count = " + obj.count);
}
}
Pemeriksaan sinkronisasi
Pemeriksaan singkat: Apa tujuan kata kunci synchronized?
Ringkasan
Ringkasan: Gunakan synchronized untuk eksklusi mutual, blok untuk kontrol yang lebih terperinci, dan kunci eksplisit untuk skenario lanjutan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Sinkronisasi dan Kunci” gratis?
Ya — teks lengkap “Sinkronisasi dan Kunci” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Sinkronisasi dan Kunci”?
Gunakan blok synchronized dan kunci eksplisit untuk mengoordinasikan akses ke sumber daya bersama. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “Sinkronisasi dan Kunci” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sinkronisasi dan Kunci
- Variabel Atomik dan Koleksi Konkuren
- Kesalahan Umum Konkurensi