Rumah Java javaTutorial Kaedah dan contoh berbilang benang yang dibangunkan di Jawa

Kaedah dan contoh berbilang benang yang dibangunkan di Jawa

Jun 18, 2023 pm 06:30 PM
Contoh Kaedah rawatan java multithreading

Java ialah bahasa pengaturcaraan yang popular dan salah satu bahasa pengaturcaraan berbilang benang yang paling banyak digunakan. Multi-threading merujuk kepada membenarkan program melaksanakan berbilang tugas pada masa yang sama, yang boleh meningkatkan kecekapan pelaksanaan program. Artikel ini akan memperkenalkan kaedah dan contoh berbilang benang dalam pembangunan Java.

  1. Konsep asas Java multi-threading

Multi-threading dalam Java ialah untuk mencipta berbilang thread untuk menyelesaikan tugasan dalam kod. Dalam atur cara berbenang tunggal, setiap penyataan dilaksanakan mengikut turutan, manakala dalam program berbilang benang, utas yang berbeza boleh melaksanakan penyataan yang berbeza pada masa yang sama, yang meningkatkan kecekapan pelaksanaan program.

Di Java, utas dilaksanakan melalui kelas Thread. Setiap utas ialah unit pelaksanaan bebas dengan timbunan pelaksanaan sendiri dan aliran kawalan pelaksanaan. Benang di Jawa dibahagikan kepada benang pengguna dan benang daemon. Apabila semua utas pengguna telah selesai melaksanakan, utas daemon juga akan menamatkan pelaksanaan.

  1. Cara untuk melaksanakan multi-threading dalam Java

Multi-threading dalam Java boleh dilaksanakan dengan melaksanakan antara muka Runnable atau mewarisi kelas Thread. Menggunakan antara muka Runnable boleh mencapai penggunaan semula kod, dan menggunakan kelas Thread boleh mencapai lebih kawalan.

2.1 Laksanakan antara muka Runnable

Menggunakan antara muka Runnable memerlukan pelaksanaan kaedah run() dan menulis kod untuk dilaksanakan oleh berbilang benang dalam kaedah run(). Untuk menggunakan antara muka Runnable, anda perlu mencipta objek Thread dan memulakan thread melalui objek Thread.

Kod sampel adalah seperti berikut:

public class MyRunnable implements Runnable {

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyRunnable start");
    }

    public static void main(String[] args) {

        MyRunnable r = new MyRunnable();
        Thread t = new Thread(r);
        t.start();

    }
}
Salin selepas log masuk

2.2 Mewarisi kelas Thread

Mewarisi kelas Thread memerlukan mengatasi kaedah run() dan menulis fungsi yang akan dilaksanakan oleh berbilang benang dalam kod kaedah run().

Kod sampel adalah seperti berikut:

public class MyThread extends Thread{

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyThread start");
    }

    public static void main(String[] args) {

        MyThread t = new MyThread();
        t.start();

    }
}
Salin selepas log masuk
  1. Kaedah biasa Java multi-threading

Multi-threading di Java boleh dikendalikan menggunakan beberapa biasa kaedah. Berikut ialah kaedah yang biasa digunakan:

3.1 start()

Kaedah start() ialah kaedah untuk memulakan thread.

Kod sampel adalah seperti berikut:

Thread t = new Thread();
t.start();
Salin selepas log masuk

3.2 join()

kaedah join() ialah kaedah yang menunggu urutan untuk menyelesaikan pelaksanaan.

Kod sampel adalah seperti berikut:

Thread t = new Thread();
t.start();
t.join();
Salin selepas log masuk

kaedah 3.3 sleep()

sleep() ialah kaedah untuk membiarkan benang tidur untuk satu tempoh masa.

Kod sampel adalah seperti berikut:

Thread.sleep(1000);
Salin selepas log masuk
  1. Isu penyegerakan Java multi-threading

Multi-threading dalam Java akan melibatkan isu penyegerakan benang boleh berbuat demikian pada masa yang sama Mengakses sumber yang sama boleh menyebabkan konflik. Java menyediakan kata kunci yang disegerakkan dan antara muka Kunci untuk menyelesaikan masalah ini.

4.1 kata kunci disegerakkan

Kata kunci disegerakkan boleh digunakan untuk mengubah suai objek atau kaedah untuk memastikan hanya satu utas boleh melaksanakan objek atau kaedah ini pada masa yang sama.

Kod sampel adalah seperti berikut:

public class MyThread implements Runnable{

    private static int count = 0;

    @Override
    public synchronized void run() {
        for (int i = 0; i < 10000; i++) {
            count++;
        }
    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}
Salin selepas log masuk

4.2 Antara muka kunci

Antara muka kunci menyediakan kaedah penguncian yang lebih fleksibel dan lebih halus daripada kata kunci yang disegerakkan.

Kod sampel adalah seperti berikut:

public class MyThread implements Runnable{

    private static int count = 0;

    private Lock lock = new ReentrantLock();

    @Override
    public void run() {

        lock.lock();
        try {
            for (int i = 0; i < 10000; i++) {
                count++;
            }
        } finally {
            lock.unlock();
        }

    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}
Salin selepas log masuk
  1. Kesimpulan

Multi-threading dalam Java boleh meningkatkan kecekapan pelaksanaan program dan sering digunakan dalam pembangunan. Artikel ini memperkenalkan konsep asas, kaedah pelaksanaan, kaedah biasa dan penyelesaian kepada masalah penyegerakan dalam multithreading Java. Saya berharap ia akan membantu pelajar yang membangunkan Java.

Atas ialah kandungan terperinci Kaedah dan contoh berbilang benang yang dibangunkan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Sebab mengapa jadual dikunci dalam Oracle dan cara menanganinya Sebab mengapa jadual dikunci dalam Oracle dan cara menanganinya Mar 03, 2024 am 09:36 AM

Sebab untuk mengunci jadual dalam Oracle dan cara menanganinya Dalam pangkalan data Oracle, mengunci jadual adalah fenomena biasa, dan terdapat banyak sebab untuk mengunci meja. Artikel ini akan meneroka beberapa sebab biasa mengapa jadual dikunci dan menyediakan beberapa kaedah pemprosesan dan contoh kod yang berkaitan. 1. Jenis kunci Dalam pangkalan data Oracle, kunci terbahagi terutamanya kepada kunci kongsi (SharedLock) dan kunci eksklusif (ExclusiveLock). Kunci kongsi digunakan untuk operasi baca, membenarkan berbilang sesi membaca sumber yang sama pada masa yang sama.

Kaedah pemprosesan dan pelaksanaan JSON dalam C++ Kaedah pemprosesan dan pelaksanaan JSON dalam C++ Aug 21, 2023 pm 11:58 PM

JSON ialah format pertukaran data ringan yang mudah dibaca dan ditulis, serta mudah untuk dihuraikan dan dijana oleh mesin. Menggunakan format JSON memudahkan pemindahan data antara pelbagai sistem. Dalam C++, terdapat banyak perpustakaan JSON sumber terbuka untuk pemprosesan JSON. Artikel ini akan memperkenalkan beberapa kaedah pemprosesan dan pelaksanaan JSON yang biasa digunakan dalam C++. Kaedah pemprosesan JSON dalam C++ RapidJSON RapidJSON ialah penghurai/penjana JSON C++ pantas yang menyediakan DOM, SAX dan

Bagaimana untuk menangani masalah luar sempadan tatasusunan dalam pembangunan C++ Bagaimana untuk menangani masalah luar sempadan tatasusunan dalam pembangunan C++ Aug 21, 2023 pm 10:04 PM

Cara menangani masalah luar sempadan tatasusunan dalam pembangunan C++ Dalam pembangunan C++, masalah luar sempadan tatasusunan ialah ralat biasa, yang boleh menyebabkan ranap program, rasuah data dan juga kelemahan keselamatan. Oleh itu, mengendalikan masalah luar sempadan tatasusunan dengan betul adalah bahagian penting dalam memastikan kualiti program. Artikel ini akan memperkenalkan beberapa kaedah pemprosesan biasa dan cadangan untuk membantu pembangun mengelakkan masalah luar sempadan tatasusunan. Pertama, adalah penting untuk memahami punca masalah di luar sempadan tatasusunan. Tatasusunan di luar sempadan merujuk kepada indeks yang melebihi julat takrifannya apabila mengakses tatasusunan. Ini biasanya berlaku dalam senario berikut: Nombor negatif digunakan semasa mengakses tatasusunan

Penjelasan terperinci tentang senario penggunaan dan fungsi kata kunci yang tidak menentu dalam Java Penjelasan terperinci tentang senario penggunaan dan fungsi kata kunci yang tidak menentu dalam Java Jan 30, 2024 am 10:01 AM

Penjelasan terperinci tentang peranan dan senario aplikasi kata kunci yang tidak menentu dalam Java 1. Peranan kata kunci yang tidak menentu Dalam Java, kata kunci yang tidak menentu digunakan untuk mengenal pasti pembolehubah yang boleh dilihat di antara beberapa utas, iaitu, untuk memastikan keterlihatan. Khususnya, apabila pembolehubah diisytiharkan tidak menentu, sebarang pengubahsuaian pada pembolehubah itu akan diketahui dengan serta-merta oleh rangkaian lain. 2. Senario Aplikasi Bendera Status Kata Kunci Meruap Kata kunci tidak menentu sesuai untuk beberapa senario bendera status, seperti

Langkah-langkah untuk menyelesaikan masalah penggunaan memori yang tinggi dalam win7 Langkah-langkah untuk menyelesaikan masalah penggunaan memori yang tinggi dalam win7 Dec 27, 2023 pm 10:27 PM

Ruang memori komputer bergantung kepada kelancaran operasi komputer Lama kelamaan, memori akan menjadi penuh dan penggunaan akan menjadi terlalu tinggi, yang akan menyebabkan komputer menjadi tertangguh. Mari kita lihat penyelesaian di bawah. Apa yang perlu dilakukan jika penggunaan memori win7 terlalu tinggi: Kaedah 1. Lumpuhkan kemas kini automatik 1. Klik "Start" untuk membuka "Control Panel" 2. Klik "Windows Update" 3. Klik "Change Settings" di sebelah kiri 4. Pilih Kaedah "Jangan Semak Kemas Kini" 2. Pemadaman perisian: Nyahpasang semua perisian yang tidak berguna. Kaedah 3: Tutup proses dan tamatkan semua proses yang tidak berguna, jika tidak akan terdapat banyak iklan di latar belakang yang mengisi memori. Kaedah 4: Lumpuhkan perkhidmatan Banyak perkhidmatan tidak berguna dalam sistem juga ditutup, yang bukan sahaja memastikan keselamatan tetapi juga menjimatkan ruang.

Bagaimana untuk menyelesaikan masalah sambungan desktop jauh QQ Bagaimana untuk menyelesaikan masalah sambungan desktop jauh QQ Dec 26, 2023 am 11:55 AM

QQ ialah perisian sembang yang dihasilkan oleh Tencent Hampir semua orang mempunyai akaun QQ dan boleh menyambung dan beroperasi dari jauh apabila berbual Namun, sesetengah pengguna menghadapi masalah tidak dapat menyambung, jadi apakah yang perlu mereka lakukan? Mari lihat di bawah. Apa yang perlu dilakukan jika Desktop Jauh QQ tidak dapat menyambung: 1. Buka antara muka sembang dan klik ikon "..." di sudut kanan atas 2. Pilih ikon komputer merah dan klik "Tetapan" 3. Klik "Tetapkan Kebenaran—> Desktop Jauh" 4. Tandakan "Benarkan Desktop Jauh untuk menyambung ke komputer ini"

Cara menangani isu penghirisan data dalam pembangunan C++ Cara menangani isu penghirisan data dalam pembangunan C++ Aug 22, 2023 am 08:55 AM

Cara menangani masalah penghirisan data dalam pembangunan C++ Ringkasan: Penghirisan data adalah salah satu masalah biasa dalam pembangunan C++. Artikel ini akan memperkenalkan konsep penghirisan data, membincangkan sebab masalah penghirisan data berlaku dan cara menangani masalah penghirisan data dengan berkesan. 1. Konsep penghirisan data Dalam pembangunan C++, penghirisan data bermakna apabila objek subkelas diberikan kepada objek kelas induk, objek kelas induk hanya boleh menerima bahagian objek subkelas yang sepadan dengan ahli data kelas induk. objek. Ahli data yang baru ditambah atau diubah suai dalam objek subkelas hilang Ini adalah masalah penghirisan data.

Ketahui contoh amalan terbaik penukaran penunjuk di Golang Ketahui contoh amalan terbaik penukaran penunjuk di Golang Feb 24, 2024 pm 03:51 PM

Golang ialah bahasa pengaturcaraan yang berkuasa dan cekap yang boleh digunakan untuk membangunkan pelbagai aplikasi dan perkhidmatan. Di Golang, penunjuk ialah konsep yang sangat penting, yang boleh membantu kami mengendalikan data dengan lebih fleksibel dan cekap. Penukaran penunjuk merujuk kepada proses operasi penunjuk antara jenis yang berbeza Artikel ini akan menggunakan contoh khusus untuk mempelajari amalan terbaik penukaran penunjuk di Golang. 1. Konsep asas Di Golang, setiap pembolehubah mempunyai alamat, dan alamat adalah lokasi pembolehubah dalam ingatan.

See all articles