Utas Virtual Java 19 — Haruskah Anda menggunakannya?
Blog ini adalah Bagian 1 dari seri 2 bagian, menjelaskan apa itu utas virtual di Java 19 , bagaimana utas virtual dapat meningkatkan kinerja aplikasi dan terakhir beberapa pembandingan menggunakan utas virtual.
Apa itu utas virtual:
Karena ChatGPT adalah Google baru , mari kita tanyakan tentang definisi "Utas Virtual di Java19" (itu memberikan definisi yang berbeda dan bermakna setiap saat, pujian untuk pencipta keindahan ini !!!)
Utas virtual adalah jenis utas ringan di Java 19. Utas virtual memungkinkan pengguna untuk membuat utas dalam jumlah besar, tanpa mengalami overhead yang terkait dengan utas tradisional. Utas virtual dikelola oleh Mesin Virtual Java, sehingga dapat digunakan kembali sesuai kebutuhan dan memungkinkan peningkatan kinerja yang substansial bila dibandingkan dengan menggunakan utas asli tradisional.
Untuk pecinta GoLang di luar sana, utas virtual untuk melakukan rutinitas tidak lain adalah ' Saudara dari Ibu Lain'
Mengapa utas virtual bermanfaat
Utas virtual Java berbeda dari utas platform asli dalam arti bahwa utas virtual jauh lebih ringan dalam hal berapa banyak sumber daya (RAM) yang mereka minta dari sistem untuk dijalankan . Dengan demikian, Anda dapat memiliki lebih banyak utas virtual yang berjalan di aplikasi Anda daripada utas platform. Sementara itu, memberi Anda manfaat lengkap dari utas platform normal.
Penggunaan benang Virtual
Membuat utas virtual di java mirip dengan membuat utas Runnable konvensional. Namun, kami akan menggunakan kelas Executors, untuk membuat newVirtualThreadPerTaskExecutor (), yang memulai Thread virtual baru untuk setiap tugas. Jumlah utas yang dibuat oleh Pelaksana tidak terbatas.
Tes
Dalam pengujian ini, saya akan memanggil layanan eksternal (yang memerlukan 1 mili detik untuk merespons) dan melakukan operasi 1 juta kali menggunakan platform konvensional dan utas virtual.
Tujuan:
Untuk membandingkan waktu yang dibutuhkan oleh utas virtual vs utas konvensional untuk menyelesaikan operasi 1 juta kali.
Spesifikasi mesin : 10 core, memori 16GB.
Kode :
Benang konvensional
Saya hanya bisa menggunakan maksimal 1000 utas, lagi dan saya mendapatkan kesalahan OOM.
Benang Virtual
Hasil :
Di bawah ini adalah penggunaan CPU + Waktu yang dibutuhkan oleh kedua pendekatan untuk menjalankan loop for eksternal sebanyak 10 kali.
Benang konvensional
Utas maya
Kesimpulan :
Perbedaan waktu b/w penggunaan utas konvensional vs virtual terlihat memberi kami pemenang yang jelas untuk menggunakan utas virtual jika kami sedang menunggu beberapa layanan eksternal. Jika kita mengekstrapolasi contoh ini menjadi 10 juta atau 100 juta panggilan, perbedaannya menjadi jauh lebih besar dan utas virtual muncul sebagai kinerja yang lebih baik saat aplikasi terlibat dalam menunggu beberapa aplikasi eksternal.
Contoh tersebut meniru panggilan layanan eksternal dengan menggunakan Thread.sleep(), yang dapat diganti dengan panggilan aktual ke layanan eksternal. Ini diserahkan sebagai latihan kepada pembaca. LAKUKAN!!!
CATATAN : Memang benar bahwa dengan coba-coba, kami dapat mengoptimalkan jumlah pembuatan utas konvensional, meskipun tidak mungkin untuk memprediksi jumlah utas yang sempurna untuk setiap kasus penggunaan (jika Anda secara acak menyimpan kumpulan dengan utas yang lebih tinggi , Anda membuang-buang sumber daya aplikasi secara tidak perlu). Menggunakan alokasi utas dinamis (utas virtual) jauh lebih masuk akal dalam aplikasi dunia nyata.
Masalah dengan menggunakan Utas Virtual
Contoh di atas baru saja membuat Anda menyadari bahwa utas virtual adalah hal yang menarik, dan untuk mempercepat aplikasi Anda dan untuk pemanfaatan optimal CPU Anda, kita harus selalu membuat utas virtual.
Andai saja, semuanya tidak datang dengan “ TAPI ”.
Utas virtual di Java sangat bagus tetapi jika aplikasi Anda tidak terikat I/O yaitu, jika CPU itu sendiri perlu melakukan beberapa pemrosesan berat (seperti melatih model atau menghitung hingga 100 juta), menggunakan utas virtual bukanlah pilihan yang ideal.
Detailnya akan diberikan di bagian ke-2 untuk artikel ini. Pantau terus!!!
Pikiran terakhir
Pengenalan sistem Java 19 masih dalam tahap pengembangan (karena project Loom hanya dalam tahap pratinjau untuk saat ini), meskipun kami berharap dapat melihat peningkatan luar biasa dalam manajemen server, waktu respons API yang lebih cepat, dan masalah OOM yang lebih jarang.
Tentang Penulis :
Yash Bansal adalah Associate Principal Engineer di RedBus. Info lebih lanjut tentang dia dapat ditemukan di profil LinkedIn- nya .

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































