Rumah  >  Artikel  >  Java  >  Pengenalan kepada teknologi pengaturcaraan serentak dalam bahasa Java

Pengenalan kepada teknologi pengaturcaraan serentak dalam bahasa Java

王林
王林asal
2023-06-10 23:11:121294semak imbas

Java ialah bahasa pengaturcaraan yang digunakan secara meluas untuk membangunkan pelbagai program, dan teknologi pengaturcaraan serentaknya telah mendapat perhatian yang meluas. Dengan populariti pemproses berbilang teras dan pembangunan aplikasi Web, kepentingan pengaturcaraan serentak dalam bahasa Java telah menjadi semakin menonjol. Artikel ini bertujuan untuk memperkenalkan teknologi pengaturcaraan serentak dalam bahasa Java.

1. Apakah pengaturcaraan serentak

Dalam sains komputer, konkurensi merujuk kepada fenomena bahawa dua atau lebih proses pengkomputeran bebas wujud dalam sistem komputer pada masa yang sama. Pengaturcaraan serentak merujuk kepada teknologi pengaturcaraan untuk mereka bentuk dan melaksanakan sistem serentak Tujuannya adalah untuk menyelesaikan masalah pelbagai tugas yang dilaksanakan dalam tempoh masa yang sama dan meningkatkan keselarasan dan kecekapan sistem.

2. Benang dalam Java

Dalam bahasa Java, utas ialah komponen asas untuk mengurus aplikasi serentak. Java menyokong pengaturcaraan berbilang benang, iaitu berbilang benang boleh dijalankan serentak dalam satu proses.

Kitaran hayat benang merangkumi peringkat seperti baharu, sedia, berlari, menyekat dan mati. Dalam bahasa Java, utas dicipta dan diuruskan melalui kelas Thread dan antara muka Runnable. Kelas Thread mewakili objek thread, dan antara muka Runnable mewakili tugasan yang perlu dilakukan oleh objek thread.

Sebagai contoh, untuk mencipta benang ringkas dalam Java, anda boleh menggunakan kod berikut:

public class MyThread extends Thread {
    public void run() {
        // 线程要执行的代码
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建线程对象
        MyThread thread = new MyThread();

        // 启动线程
        thread.start();
    }
}

Dalam kod di atas, kelas MyThread mewarisi daripada kelas Thread dan mengatasi kaedah run. Dalam kaedah ini Menentukan kod yang akan dilaksanakan oleh benang. Dalam kelas Utama, objek MyThread dicipta dan benang dimulakan melalui kaedah mula.

3. Mekanisme penyegerakan dalam Java

Dalam pengaturcaraan berbilang benang, masalah sumber dikongsi adalah masalah biasa. Jika berbilang rangkaian mengakses sumber kongsi yang sama pada masa yang sama, ketidakkonsistenan data dan isu keselamatan mungkin berlaku. Pada masa ini, mekanisme penyegerakan perlu digunakan untuk menyelesaikan masalah ini.

Java menyediakan pelbagai mekanisme penyegerakan, yang paling biasa digunakan ialah kata kunci disegerakkan. Menggunakan kata kunci yang disegerakkan boleh memastikan keeksklusifan bersama apabila berbilang urutan mengakses sumber kongsi.

Sebagai contoh, kod sampel untuk menggunakan kata kunci yang disegerakkan untuk memastikan keselamatan data dalam Java adalah seperti berikut:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        // 线程安全的加1操作
        count++;
    }

    public int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Counter counter = new Counter();

        // 创建10个线程,每个线程对计数器执行100次加1操作
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                for (int j = 0; j < 100; j++) {
                    counter.increment();
                }
            }).start();
        }

        // 等待所有线程执行完毕
        Thread.sleep(1000);

        // 输出计数器的值
        System.out.println("Count: " + counter.getCount());
    }
}

Dalam kod di atas, kelas Counter mewakili objek balas, dan kenaikan kaedah menggunakan kunci disegerakkan Kaedah ini dijamin saling eksklusif Apabila berbilang benang mengakses kaedah kenaikan pada masa yang sama, hanya satu utas boleh melaksanakan kaedah. 10 utas dicipta dalam kelas Utama, dan setiap utas menambah 1 pada kaunter 100 kali. Akhir sekali, keluarkan nilai kaunter, yang sepatutnya 1000.

4. Mekanisme kunci dalam Java

Kunci ialah mekanisme yang mengawal akses berbilang benang kepada sumber yang dikongsi. Java menyediakan pelbagai mekanisme kunci, yang paling biasa digunakan ialah kelas ReentrantLock.

Kelas ReentrantLock ialah kunci reentrant yang boleh menyelesaikan isu seperti keadilan, kemasukan semula dan gangguan. Menggunakan kelas ReentrantLock boleh memastikan pengecualian bersama dan keatomisan operasi apabila berbilang benang melaksanakan kod.

Sebagai contoh, kod sampel untuk menggunakan kelas ReentrantLock untuk memastikan keselamatan data dalam Java adalah seperti berikut:

public class Counter {
    private int count = 0;
    private ReentrantLock lock = new ReentrantLock();

    public void increment() {
        lock.lock();
        try {
            // 线程安全的加1操作
            count++;
        } finally {
            lock.unlock();
        }
    }

    public int getCount() {
        return count;
    }
}

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Counter counter = new Counter();

        // 创建10个线程,每个线程对计数器执行100次加1操作
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                for (int j = 0; j < 100; j++) {
                    counter.increment();
                }
            }).start();
        }

        // 等待所有线程执行完毕
        Thread.sleep(1000);

        // 输出计数器的值
        System.out.println("Count: " + counter.getCount());
    }
}

Dalam kod di atas, kelas Counter mewakili objek balas dan kenaikan kaedah menggunakan kelas ReentrantLock untuk memastikan Kaedah ini saling eksklusif Apabila beberapa utas mengakses kaedah kenaikan pada masa yang sama, hanya satu utas boleh mendapatkan kunci dan melaksanakan kaedah. 10 utas dicipta dalam kelas Utama, dan setiap utas melakukan 100 operasi kenaikan pada kaunter. Akhir sekali, keluarkan nilai kaunter, yang sepatutnya 1000.

  1. Ringkasan

Java ialah bahasa pengaturcaraan yang digunakan secara meluas untuk membangunkan pelbagai program Dengan populariti pemproses berbilang teras dan pembangunan aplikasi Web, bahasa Java The kepentingan pengaturcaraan serentak telah menjadi semakin menonjol. Artikel ini memperkenalkan teknologi pengaturcaraan serentak dalam bahasa Java, termasuk benang, mekanisme penyegerakan dan mekanisme kunci Teknologi ini boleh membantu pembangun mengurus dan mengawal sumber yang dikongsi dengan lebih baik dalam proses pengaturcaraan berbilang benang dan memastikan ketepatan dan prestasi program.

Atas ialah kandungan terperinci Pengenalan kepada teknologi pengaturcaraan serentak dalam bahasa Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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