Java 21 memperkenalkan pengubah permainan Benang Maya! Mari kita pecahkan apakah ciri ini, bagaimana ia berbeza daripada model tradisional, serta kebaikan dan keburukannya.
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 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.
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
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.
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!")); } }
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!