Rumah > Java > javaTutorial > teks badan

Menggunakan putaran sibuk sebagai strategi menunggu di Jawa

WBOY
Lepaskan: 2023-09-12 19:33:02
ke hadapan
1435 orang telah melayarinya

Menggunakan putaran sibuk sebagai strategi menunggu di Jawa

Dalam dunia dinamik pengaturcaraan Java, mencapai prestasi optimum selalunya menjadi matlamat utama bagi pembangun. Ini adalah kawasan di mana strategi menunggu yang berbeza, termasuk giliran sibuk, boleh memainkan peranan penting. Artikel ini bertujuan untuk memahami secara terperinci pusingan sibuk sebagai strategi menunggu di Jawa, kepentingannya dan cara menggunakannya dengan berkesan.

Fahami strategi menunggu

Dalam pengaturcaraan serentak, dasar tunggu menentukan cara urutan harus menunggu apabila tiada kerja tersedia. Strategi menunggu yang berbeza boleh menjejaskan prestasi aplikasi serentak. Pendekatan biasa ialah menyekat, di mana benang melepaskan masa pemprosesnya dan tidur sehingga kerja baharu tersedia. Walau bagaimanapun, membangunkan benang tidur boleh mengambil masa yang lama, menyebabkan kemerosotan prestasi dalam aplikasi sensitif kependaman. Di sinilah Busy Spin memainkan peranan.

Penjelasan spin yang sibuk

Sibuk berputar ialah strategi menunggu di mana benang terus berputar (atau "berputar") sehingga kerja tersedia. Strategi ini mengelakkan kelewatan yang disebabkan oleh rangkaian bangun, tetapi dengan kos penggunaan CPU yang lebih tinggi. Putaran yang sibuk adalah yang terbaik untuk aplikasi berkependaman rendah dan berprestasi tinggi di mana masa menunggu kerja biasanya kurang daripada kos meletakkan benang untuk tidur dan membangunkannya

Di Java anda boleh mencipta gelung pusingan sibuk yang ringkas seperti yang ditunjukkan di bawah -

while (!workAvailable()) {
   Thread.onSpinWait();
}
Salin selepas log masuk

Di sini, workAvailable() ialah kaedah untuk menyemak sama ada benang itu berfungsi. Jika tiada kerja tersedia, benang akan memanggil Thread.onSpinWait(), yang menunjukkan kepada JVM bahawa ia berada dalam gelung putaran yang sibuk.

Kaedah

Thread.onSpinWait() dalam Java

Java 9 memperkenalkan kaedah Thread.onSpinWait(), yang direka khusus untuk putaran yang sibuk. Apabila benang memanggil kaedah ini, ia memberi isyarat kepada JVM bahawa ia berada dalam gelung putaran yang sibuk. Ini membolehkan JVM dan perkakasan asas mengoptimumkan pelaksanaan gelung putaran, contohnya, dengan mengurangkan penggunaan kuasa atau keutamaan benang putaran.

Bila menggunakan pusingan sibuk

Walaupun sibuk berputar berpotensi mengurangkan kependaman, ia harus digunakan dengan berhati-hati kerana ia boleh mengakibatkan penggunaan CPU yang tinggi. Ia paling sesuai untuk aplikasi berprestasi tinggi di mana kependaman rendah adalah kritikal dan masa menunggu untuk kerja biasanya singkat. Contohnya mungkin termasuk sistem perdagangan kewangan atau pelayan permainan berprestasi tinggi.

Sebaliknya, untuk aplikasi yang penggunaan CPU rendah adalah lebih penting daripada kependaman rendah, atau di mana benang kerap perlu menunggu lama untuk melakukan kerjanya, strategi menunggu lain (seperti mengalah atau menyekat) mungkin lebih sesuai.

Kesimpulan

Mengetahui strategi menunggu yang berbeza, termasuk sibuk berputar, adalah penting untuk menulis aplikasi Java serentak yang cekap. Putaran yang sibuk boleh mengurangkan kependaman dengan ketara dalam sesetengah senario, tetapi ia perlu digunakan dengan berhati-hati kerana penggunaan CPU yang tinggi. Kaedah Thread.onSpinWait() yang diperkenalkan dalam Java 9 menyediakan alat yang berharga untuk melaksanakan dan mengoptimumkan gelung putaran sibuk di Java.

Ingat bahawa pilihan strategi menunggu hendaklah sentiasa bergantung pada keperluan khusus permohonan. Memahami pertukaran strategi menunggu yang berbeza membolehkan anda membuat keputusan termaklum dan mencipta aplikasi berprestasi tinggi, berskala dan cekap menggunakan Java.

Atas ialah kandungan terperinci Menggunakan putaran sibuk sebagai strategi menunggu di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!