0Pricing
Java Academy · Pelajaran

Apa Itu Virtual Thread

Thread ringan di Java 21.

Apa Itu Virtual Thread adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Selamat Datang di Utas Virtual

Utas virtual hadir sebagai fitur akhir dalam Java 21 (JEP 444). Utas ini ringan dan dikelola oleh JVM, bukan oleh sistem operasi.

Tujuannya sederhana: memungkinkan Anda menulis kode lugas dengan satu utas per permintaan sambil tetap menskalakan hingga jutaan tugas serentak.

Masalah Lama

Sebuah utas platform tradisional dipetakan satu per satu ke utas OS. Setiap utas menggunakan sekitar satu megabita tumpukan dan mahal untuk dibuat.

Artinya, Anda hanya dapat menjalankan beberapa ribu utas sekaligus. I/O yang memblokir membuat seluruh utas OS sibuk selama menunggu.

Perbedaan Utas Virtual

Sebuah utas virtual tidak memiliki utas OS sendiri. Banyak utas virtual dimultipleks ke kumpulan kecil utas platform pembawa.

  • Murah dibuat (ribuan per milidetik)
  • Jejak memori sangat kecil
  • Pemblokiran cukup menjeda utas virtual, sehingga utas pembawa bebas

Pemasangan dan Pelepasan

Saat utas virtual berjalan, utas tersebut dipasang pada utas pembawa. Saat menemui operasi pemblokiran, utas tersebut dilepas, sehingga utas pembawa dapat digunakan oleh pekerjaan lain.

Proses menjeda dan melanjutkan ini terjadi secara otomatis. Kode Anda terbaca seperti kode pemblokiran biasa.

Utas Virtual Pertama

Berikut contoh yang paling sederhana. Thread.ofVirtual().start(...) memulai utas virtual, dan 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.");
    }
}

Memastikan Ini Virtual

Setiap Thread menyediakan isVirtual(). Dengan demikian, Anda dapat memverifikasi jenis utas yang digunakan untuk menjalankan kode 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 Banyak Tugas

Karena utas virtual murah, meluncurkan puluhan ribu utas merupakan hal yang wajar. Di sini kita membuat 10.000 utas tersebut.

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());
    }
}

Memberi Nama Utas Virtual

Anda dapat memberi nama utas virtual agar lebih mudah melakukan debug dengan menggunakan pembuat sebelum memulainya.

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();
    }
}

Antarmuka yang Sama, Mesin Baru

Utas virtual menerapkan tepat antarmuka Thread yang sama yang sudah Anda kenal. Anda tetap menggunakan start, join, sleep, dan interrupt.

Ini berarti pustaka yang sudah ada dan dibangun di atas Thread serta Runnable dapat bekerja tanpa perubahan.

Kapan Menggunakannya

Utas virtual sangat unggul untuk beban kerja terikat I/O: server web, pemanggilan basis data, dan permintaan ke API jarak jauh.

Utas virtual tidak lebih cepat untuk perhitungan angka yang terikat CPU. Dalam hal itu, Anda tetap dibatasi oleh jumlah inti prosesor.

Bukan Kumpulan Utas

Perubahan pola pikir yang penting: Anda tidak mengumpulkan utas virtual dalam satu kumpulan. Buat satu utas baru untuk setiap tugas dan biarkan utas tersebut berhenti saat tugas selesai.

Kumpulan digunakan untuk memakai kembali sumber daya yang mahal. Utas virtual murah, jadi mengumpulkannya merupakan pola yang harus dihindari.

Uji Singkat

Uji pemahaman Anda tentang utas virtual.

Rangkuman

Anda telah mempelajari apa itu utas virtual dan alasan pentingnya:

  • Ringan, dikelola JVM, dan ditetapkan sebagai fitur final di Java 21
  • Dimultiplekskan ke utas pembawa melalui pemasangan dan pelepasan
  • Ideal untuk pekerjaan terikat I/O dengan konkurensi tinggi
  • Menggunakan API Thread yang sama, tetapi dibuat per tugas, bukan dikumpulkan

Selanjutnya, Anda akan mempelajari berbagai cara untuk membuatnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Apa Itu Virtual Thread” gratis?

Ya — teks lengkap “Apa Itu Virtual Thread” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Apa Itu Virtual Thread”?

Thread ringan di Java 21. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Apa Itu Virtual Thread” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Apa Itu Virtual Thread
  2. Membuat Virtual Thread
  3. Thread Platform vs Virtual
  4. Jebakan: Pinning dan ThreadLocals
← Kembali ke Java Academy