Apakah Thread Maya
Thread ringan dalam Java 21
Apakah Thread Maya ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Selamat Datang ke Thread Maya
Thread maya diperkenalkan sebagai ciri akhir dalam Java 21 (JEP 444). Thread ini ialah Thread ringan yang diurus oleh JVM, bukannya sistem operasi.
Matlamatnya mudah: membolehkan Anda menulis kod satu Thread bagi setiap permintaan yang jelas sambil mengendalikan berjuta-juta tugas serentak.
Masalah Lama
Thread platform tradisional dipetakan satu dengan satu kepada Thread OS. Setiap satunya menggunakan kira-kira satu megabait tindanan dan mahal untuk dicipta.
Ini bermakna Anda hanya boleh menjalankan beberapa ribu pada satu masa. I/O yang menyekat mengikat keseluruhan Thread OS sementara menunggu.
Perbezaan Thread Maya
Satu Thread maya tidak memiliki Thread OS. Banyak Thread maya dimultiplekskan ke dalam kumpulan kecil Thread platform pembawa.
- Murah untuk dicipta (beribu-ribu setiap milisaat)
- Penggunaan memori sangat kecil
- Penyekatan hanya meletakkan Thread maya dalam keadaan menunggu, lalu membebaskan Thread pembawa
Pemasangan dan Penanggalan
Apabila Thread maya berjalan, Thread itu dipasang pada Thread pembawa. Apabila menemui operasi yang menyekat, Thread itu ditanggalkan, lalu membebaskan Thread pembawa supaya kerja lain boleh diteruskan.
Proses jeda dan sambung semula ini berlaku secara automatik. Kod Anda kelihatan seperti kod penyekatan biasa.
Thread Maya Pertama
Berikut ialah contoh paling ringkas yang mungkin. Thread.ofVirtual().start(...) memulakan Thread maya, manakala join() menunggunya.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual().start(() ->
System.out.println("Hello from a virtual thread!"));
vt.join();
System.out.println("Main is done.");
}
}Mengesahkan Ia Maya
Setiap Thread menyediakan isVirtual(). Ini membolehkan Anda mengesahkan jenis Thread yang sedang digunakan oleh kod Anda.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual().start(() -> {
System.out.println("isVirtual: " + Thread.currentThread().isVirtual());
});
vt.join();
}
}Menskalakan kepada Banyak Tugas
Oleh sebab Thread maya murah, memulakan puluhan ribu Thread adalah perkara biasa. Di sini, kita memulakan 10,000 daripadanya.
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
public static void main(String[] args) throws InterruptedException {
AtomicInteger counter = new AtomicInteger();
Thread[] threads = new Thread[10_000];
for (int i = 0; i < threads.length; i++) {
threads[i] = Thread.ofVirtual().start(counter::incrementAndGet);
}
for (Thread t : threads) t.join();
System.out.println("Completed: " + counter.get());
}
}Menamakan Thread Maya
Anda boleh menamakan Thread maya untuk memudahkan penyahpepijatan menggunakan pembina sebelum memulakannya.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual()
.name("worker-1")
.start(() ->
System.out.println("Running on: " + Thread.currentThread().getName()));
vt.join();
}
}Antara Muka Sama, Enjin Baharu
Thread maya melaksanakan antara muka Thread yang sama sepenuhnya seperti yang telah Anda ketahui. Anda masih menggunakan start, join, sleep dan interrupt.
Ini bermakna pustaka sedia ada yang dibina berdasarkan Thread dan Runnable boleh berfungsi tanpa perubahan.
Bila Menggunakannya
Benang maya sangat sesuai untuk beban kerja terikat masukan/keluaran: pelayan web, panggilan pangkalan data dan permintaan antara muka pengaturcaraan aplikasi jarak jauh.
Benang ini tidak lebih pantas untuk pengiraan nombor yang terikat CPU. Dalam keadaan itu, anda masih dihadkan oleh bilangan teras.
Bukan Kumpulan
Perubahan cara fikir yang penting: anda tidak mengumpulkan benang maya. Cipta benang baharu bagi setiap tugas dan biarkan benang itu tamat apabila tugas selesai.
Pengumpulan digunakan untuk menggunakan semula sumber yang mahal. Benang maya murah, jadi mengumpulkannya ialah antipola.
Semakan Pantas
Uji pemahaman anda tentang benang maya.
Ringkasan
Anda telah mempelajari perkara yang dimaksudkan dengan benang maya dan sebab benang ini penting:
- Ringan, diurus oleh JVM dan dimuktamadkan dalam Java 21
- Digandakan pada benang pembawa melalui proses pemasangan dan nyahpemasangan
- Sangat sesuai untuk kerja terikat masukan/keluaran dengan keserentakan tinggi
- Menggunakan antara muka
Threadyang sama, tetapi dicipta bagi setiap tugas dan bukannya dikumpulkan
Seterusnya, anda akan mempelajari pelbagai cara untuk menciptakannya.
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Apakah Thread Maya” percuma?
Ya — teks penuh “Apakah Thread Maya” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Apakah Thread Maya”?
Thread ringan dalam Java 21 Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Apakah Thread Maya” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Apakah Thread Maya
- Mencipta Thread Maya
- Thread Platform berbanding Thread Maya
- Perangkap: Pinning dan ThreadLocals