Rumah > Java > javaTutorial > Pelaksanaan dan aplikasi mekanisme kunci dalam pengaturcaraan selari Java

Pelaksanaan dan aplikasi mekanisme kunci dalam pengaturcaraan selari Java

王林
Lepaskan: 2024-04-18 21:30:01
asal
1121 orang telah melayarinya

Dalam pengaturcaraan selari Java, mekanisme kunci ialah alat penting untuk mengawal akses kepada sumber yang dikongsi, termasuk kunci terbina dalam, kunci eksplisit dan kunci baca-tulis. Ia digunakan untuk melindungi data yang dikongsi, mengawal susunan akses dan menunggu tugasan benang selesai. Dalam kes praktikal, kunci terbina dalam digunakan untuk melindungi akses kepada baki akaun bank untuk memastikan akses serentak adalah selamat dan betul.

Pelaksanaan dan aplikasi mekanisme kunci dalam pengaturcaraan selari Java

Mekanisme Kunci dalam Pengaturcaraan Selari Java

Dalam pengaturcaraan selari Java, mekanisme kunci ialah alat penting untuk mengawal akses kepada sumber yang dikongsi. Mereka menghalang berbilang benang daripada mengakses data yang dikongsi secara serentak, memastikan ketekalan data dan ketepatan program.

Java menyediakan pelbagai mekanisme penguncian, termasuk:

  • Kunci terbina dalam (disegerakkan): Kunci terbina dalam dikaitkan dengan objek itu sendiri dan diperoleh dengan menggunakan kata kunci synchronized .
  • synchronized 关键字来获取。
  • 显式锁 (Lock):显式锁是 Java 并发包中提供的接口,它提供比内置锁更细粒度的控制。
  • 读写锁 (ReadWriteLock):读写锁允许多个线程同时获取共享资源的只读访问,但只能有一个线程获取写访问。

使用场景

锁机制在并行编程中有多种应用场景,包括:

  • 保护共享数据免受并发访问。
  • 控制对资源的访问顺序。
  • 等待其他线程完成任务。

实战案例:银行账户

考虑一个银行账户的示例,它可以被多个线程并发访问。为了确保账户余额的一致性,必须使用锁来保护对此余额的访问。

使用内置锁实现的 Java 代码如下:

public class BankAccount {
    private int balance;

    public synchronized void deposit(int amount) {
        balance += amount;
    }

    public synchronized void withdraw(int amount) {
        if (amount <= balance)
            balance -= amount;
    }

    public int getBalance() {
        return balance;
    }
}
Salin selepas log masuk

在上面示例中,synchronized 关键字用于保护对 balance 变量的访问。任何试图访问或修改 balance

Kunci eksplisit (Kunci)

: Kunci eksplisit ialah antara muka yang disediakan dalam pakej konkurensi Java, yang menyediakan kawalan yang lebih halus daripada kunci terbina dalam. Kunci Baca-Tulis (ReadWriteLock)

: Kunci baca-tulis membenarkan berbilang urutan mendapatkan akses baca sahaja kepada sumber yang dikongsi pada masa yang sama, tetapi hanya satu utas boleh memperoleh akses tulis.

Senario penggunaan🎜🎜🎜Mekanisme kunci mempunyai pelbagai senario aplikasi dalam pengaturcaraan selari, termasuk: 🎜🎜🎜Melindungi data kongsi daripada akses serentak. 🎜Kawal susunan akses kepada sumber. 🎜Tunggu urutan lain untuk menyelesaikan tugasan. 🎜🎜Kes Praktikal: Akaun Bank🎜🎜🎜Pertimbangkan contoh akaun bank yang boleh diakses serentak oleh berbilang rangkaian. Untuk memastikan ketekalan baki akaun, akses kepada baki ini mesti dilindungi menggunakan kunci. 🎜🎜Kod Java yang dilaksanakan menggunakan kunci terbina dalam adalah seperti berikut: 🎜rrreee🎜Dalam contoh di atas, kata kunci synchronized digunakan untuk melindungi akses kepada pembolehubah balance . Mana-mana urutan yang cuba mengakses atau mengubah suai baki mesti memperoleh kunci objek terlebih dahulu. Ini memastikan bahawa hanya satu utas boleh mengakses pembolehubah pada satu masa. 🎜🎜🎜Kesimpulan🎜🎜🎜Mekanisme penguncian adalah penting untuk pengaturcaraan selari Java, yang boleh memastikan akses serentak kepada sumber dikongsi adalah selamat dan betul. Artikel ini memperkenalkan mekanisme kunci yang disediakan oleh Java dan senario aplikasinya serta menyediakan kes praktikal untuk menunjukkan cara menggunakan kunci untuk melindungi data kongsi. 🎜

Atas ialah kandungan terperinci Pelaksanaan dan aplikasi mekanisme kunci dalam pengaturcaraan selari Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan