Rumah  >  Artikel  >  Java  >  Benang Maya Java: Merevolusikan Concurrency!

Benang Maya Java: Merevolusikan Concurrency!

Susan Sarandon
Susan Sarandonasal
2024-11-03 12:35:301001semak imbas

Java 21 memperkenalkan pengubah permainan Benang Maya! Mari kita pecahkan apakah ciri ini, bagaimana ia berbeza daripada model tradisional, serta kebaikan dan keburukannya.

Apakah Benang Maya?

Java Virtual Threads: Revolutionizing Concurrency!
Dalam versi Java sebelumnya, mencipta utas bermakna mengikatnya terus ke utas sistem pengendalian (OS), yang merupakan sumber terhad. Memusingkan sejumlah besar utas OS selalunya menyebabkan kesesakan prestasi dan peningkatan penggunaan memori. Dengan Java 21, Virtual Threads (a.k.a. Project Loom) menyasarkan untuk menyelesaikannya dengan menawarkan benang ringan dan boleh diurus yang dipisahkan daripada benang OS.

? Ringkasnya: Fikirkan benang maya sebagai benang bersaiz mikro yang membolehkan anda mengendalikan beribu-ribu tugas serentak dengan lebih cekap tanpa memonopoli sumber sistem.


Model Benang Lama lwn Benang Maya

Java Virtual Threads: Revolutionizing Concurrency!
Model benang lama Java, berdasarkan "benang platform," memerlukan setiap utas Java mempunyai pemetaan 1:1 ke utas OS. Walaupun boleh dipercayai, ia juga bermaksud:

Had Memori: Benang platform menggunakan memori yang ketara.
Isu Penskalaan: Menguruskan bilangan utas yang tinggi boleh membebankan sumber sistem.
Menyekat Masalah I/O: Benang OS yang menunggu pada I/O menyekat operasi lain, memperlahankan prestasi.

Masukkan Benang Maya! ?‍♂️
Benang Maya membolehkan anda mencipta berjuta-juta benang tanpa ketegangan sumber. Mereka tidak terikat pada urutan OS, jadi apabila urutan maya disekat (mis., menunggu I/O), urutan pembawa asas boleh mengambil urutan maya lain untuk memastikan perkara berjalan lancar.


Benang Tradisional lwn Benang Maya

Java Virtual Threads: Revolutionizing Concurrency!

TRADITIONAL THREADS                        VIRTUAL THREADS
---------------------------------          ---------------------------------
| Java Thread -> OS Thread -> Task |       | Virtual Thread -> Carrier OS Thread |
| Java Thread -> OS Thread -> Task |  ->   | Virtual Thread -> Carrier OS Thread |
| Java Thread -> OS Thread -> Task |       | Virtual Thread -> Carrier OS Thread |
---------------------------------          ---------------------------------


Dalam Benang Maya, berbilang urutan maya boleh diberikan kepada satu urutan OS, mengoptimumkan peruntukan sumber.

Kebaikan dan Keburukan Benang Maya

Kebaikan

Skala yang Lebih Tinggi: Mengendalikan berjuta-juta rangkaian, menjadikannya sempurna untuk aplikasi sebelah pelayan.
Kurang Penggunaan Memori: Benang maya adalah ringan, bermakna setiap satu tidak memerlukan urutan OS penuh.
I/O Penyekatan Cekap: Apabila utas maya menghadapi penyekatan I/O, utas pembawa boleh mengambil tugas lain, memastikan sistem aktif.
Pengurusan Sumber yang Lebih Baik: Benang tidak lagi terhad kepada kumpulan urutan OS yang terhad, jadi lebih sedikit sumber yang dibazirkan.

Keburukan

Keluk Pembelajaran: Urutan maya memperkenalkan konsep konkurensi baharu yang mungkin memerlukan pemikiran semula amalan pengurusan utas sedia ada.
Cabaran Nyahpepijat Baharu: Menyahpepijat beribu-ribu (atau berjuta-juta) utas maya boleh menjadi lebih kompleks.
Tidak Sesuai untuk Semua Aplikasi: Aplikasi berbenang tunggal atau aplikasi yang mempunyai konkurensi yang minimum tidak akan mendapat banyak manfaat daripada rangkaian maya.


Contoh Kod: Benang Tradisional lwn Maya

Mari kita lihat contoh mudah utas tradisional dan bandingkan dengan utas maya.

Benang Tradisional

TRADITIONAL THREADS                        VIRTUAL THREADS
---------------------------------          ---------------------------------
| Java Thread -> OS Thread -> Task |       | Virtual Thread -> Carrier OS Thread |
| Java Thread -> OS Thread -> Task |  ->   | Virtual Thread -> Carrier OS Thread |
| Java Thread -> OS Thread -> Task |       | Virtual Thread -> Carrier OS Thread |
---------------------------------          ---------------------------------

Benang Maya (Java 21)

Benang Maya diurus secara bebas oleh Mesin Maya Java (JVM) dan tidak terhad kepada urutan OS.

public class TraditionalThreadExample {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> System.out.println("Hello from a traditional thread!"));
        thread.start();
    }
}

contoh contoh menjalankan 100000 tugasan menggunakan platform dan urutan maya.

public class VirtualThreadExample {
    public static void main(String[] args) {
        Thread.startVirtualThread(() -> System.out.println("Hello from a virtual thread!"));
    }
}


Bilakah Anda Harus Menggunakan Benang Maya?

  • Aplikasi Pelayan: Mengendalikan berbilang permintaan serentak, seperti pelayan web atau sambungan pangkalan data.
  • Aplikasi Terikat I/O: Ini terutamanya aplikasi dengan operasi I/O berat seperti pemprosesan fail, permintaan rangkaian atau pengikisan web.
  • Perkhidmatan Mikro asli awan: Sistem yang memerlukan kebolehskalaan tinggi akan mendapat manfaat daripada urutan maya.

Kesimpulan: Masa Depan Konkurensi Ada Di Sini ?

Dengan pengenalan urutan maya dalam Java 21, mengurus tugas serentak adalah lebih cekap, berskala dan ringan berbanding sebelum ini. Sama ada anda mengendalikan ratusan atau berjuta-juta tugas, urutan maya menyediakan laluan kepada cara pengaturcaraan yang lebih mudah dan mesra sumber dalam Java.

Atas ialah kandungan terperinci Benang Maya Java: Merevolusikan Concurrency!. 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