Kitaran hayat benang dibahagikan kepada beberapa peringkat
5 peringkat: 1. Baru, iaitu benang yang baru dibuat menggunakan kaedah baharu; 2. Sedia, iaitu selepas memanggil kaedah mula() benang sedang dalam peringkat menunggu CPU untuk memperuntukkan sumber; menjadi disekat kerana beberapa sebab; 5. Kemusnahan , selepas utas menyelesaikan pelaksanaan biasa atau utas ditamatkan secara paksa terlebih dahulu atau pengecualian berlaku, utas akan dimusnahkan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, komputer Dell G3.
Kitaran hayat benang terdiri daripada 5 peringkat, termasuk: baharu, sedia, berjalan, disekat dan musnah. Gambar rajah kitaran hayat yang lengkap adalah seperti berikut:
Apabila thread memasuki keadaan berjalan, sistem pengendalian umum menggunakan kaedah preemptive untuk membenarkan thread memperoleh CPU. Oleh itu, CPU perlu bertukar antara berbilang benang, jadi status benang akan bertukar antara berjalan, disekat dan sedia beberapa kali.
Baharu : Gunakan kaedah baharu, baharu keluar Thread, pada masa ini, hanya mesin maya JAVA yang memperuntukkan memori untuknya dan memulakan nilai pembolehubah ahli. Ia hanyalah objek pada masa ini.
Sedia: Ia dipanggil Selepas kaedah permulaan () utas, utas berada dalam peringkat menunggu CPU memperuntukkan sumber Sesiapa yang mengambil sumber CPU terlebih dahulu akan memulakan pelaksanaan
Benang memasuki keadaan sedia, dan maya JAVA mesin mencipta timbunan panggilan kaedah untuknya dan pembilang program. Pelaksanaan utas dikawal oleh platform asas dan mempunyai tahap rawak tertentu.
Berlari: Apabila benang sedia dijadualkan Apabila ia diperolehi Sumber CPU, ia memasuki keadaan berjalan Kaedah larian mentakrifkan operasi dan fungsi utas; (apabila utas dalam keadaan sedia memperoleh CPU, ia akan melaksanakan kaedah run()
Untuk teras tunggal. CPU (atau (teras), ia hanya boleh melaksanakan satu arahan pada masa yang sama dan JVM mencapai berbilang benang dengan cepat menukar benang untuk melaksanakan arahan. Pemproses sebenar boleh memproses satu arahan pada masa yang sama, tetapi kelajuan pensuisan ini adalah sangat pantas, dan kami tidak akan melakukannya sama sekali. Untuk memulihkan kedudukan pelaksanaan yang betul selepas penukaran thread, setiap thread mempunyai pembilang program bebas Pembilang antara setiap thread tidak menjejaskan satu sama lain dan disimpan secara berasingan.
Apabila benang mula berjalan, ia tidak boleh memegang CPU sepanjang masa (melainkan badan pelaksanaan benang sangat pendek dan pelaksanaan tamat serta-merta). Oleh itu, benang perlu diganggu semasa pelaksanaan untuk membolehkan benang lain mendapat akses kepada CPU untuk pelaksanaan. Butiran penjadualan urutan bergantung pada strategi yang digunakan oleh platform asas.
Disekat: Dalam keadaan berjalan, ia mungkin berlaku atas sebab tertentu. menjadi tersekat. Sebabnya adalah seperti berikut:
1.等待I/O流的输入输出 2.等待网络资源,即网速问题 3.调用sleep()方法,需要等sleep时间结束 4.调用wait()方法,需要调用notify()唤醒线程 5.其他线程执行join()方法,当前线程则会阻塞,需要等其他线程执行完。
Rajah penukaran status adalah seperti berikut:
Jika utas menyelesaikan pelaksanaan biasa atau utas ditamatkan secara paksa terlebih dahulu atau pengecualian berlaku, utas akan dimusnahkan dan sumber akan dikeluarkan .
1. Kaedah run()/call() dilaksanakan dan thread berakhir seperti biasa; ) kaedah untuk menamatkan benang - kaedah ini boleh menyebabkan kebuntuan dengan mudah dan secara amnya tidak disyorkan.
Pengetahuan lanjutan: potongan masa CPU Terdapat pengayun kristal pada tahap sistem pengendalian, yang sedikit seperti sami yang membunyikan loceng setiap beberapa saat. Perlanggaran berlaku sekali dalam tempoh masa yang singkat, membahagikan masa CPU kepada kepingan masa setiap benang sebenarnya terus merebut kepingan masa satu demi satu selepas kepingan masa mencapai titik, ia masih perlu merebutnya lagi ( untuk memastikan bahawa semua Thread mempunyai peluang untuk merebut CPU untuk melaksanakan logik mereka sendiri)
Keadaan baharu
Mari lihat sekeping kod berikut:
Penciptaan di sini, Ia hanya dicipta pada peringkat bahasa pengaturcaraan JAVA, tetapi pada peringkat sistem pengendalian, benang sebenar masih belum dibuat. Hanya apabila kita memanggil kaedah start() barulah benang akan dibuat dan memasuki keadaan Runnable. Hanya apabila kami memanggil kaedah start() barulah urutan itu dibuatThread t1 = new Thread();
Untuk pengetahuan yang lebih berkaitan, sila lawati lajur
Soalan LazimAtas ialah kandungan terperinci Kitaran hayat benang dibahagikan kepada beberapa peringkat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



8-teras bermakna CPU mempunyai 8 teras fizikal, dan 16-benang bermakna CPU boleh mempunyai sehingga 16 utas pemprosesan tugasan pada masa yang sama. Bilangan teras dan utas adalah penunjuk prestasi penting CPU komputer Semakin tinggi bilangan teras CPU, semakin tinggi kelajuan pemprosesan semakin banyak bilangan utas, semakin kondusif untuk menjalankan berbilang program pada masa yang sama; kerana bilangan utas adalah bersamaan dengan bilangan kali CPU boleh berjalan pada masa yang sama pada masa tertentu Bilangan tugasan yang perlu diproses secara selari. Multi-threading boleh memaksimumkan isu luas, pemprosesan superskalar tertib, meningkatkan penggunaan komponen pengkomputeran pemproses, dan mengurangkan kelewatan akses memori yang disebabkan oleh korelasi data atau kehilangan cache.

vue3 menukar 4 fungsi kitaran hayat. API gabungan Vue3 membatalkan fungsi cangkuk beforeCreated dan dicipta dan sebaliknya menggunakan cangkuk langkah, dan ini tidak boleh digunakan di dalamnya. Fungsi cangkuk untuk pemusnahan komponen dalam Vue3 telah ditukar daripada musnah dan beforeDestroy kepada beforeUnmount dan unmounted.

Dalam C++, penunjuk fungsi memerlukan pemusnahan dan pengurusan kitaran hayat yang betul. Ini boleh dicapai dengan memusnahkan penunjuk fungsi secara manual dan melepaskan memori. Gunakan penunjuk pintar, seperti std::unique_ptr atau std::shared_ptr, untuk mengurus kitaran hayat penunjuk fungsi secara automatik. Ikat penunjuk fungsi pada objek, dan kitaran hayat objek menguruskan pemusnahan penunjuk fungsi. Dalam pengaturcaraan GUI, menggunakan penunjuk pintar atau mengikat objek memastikan fungsi panggil balik dimusnahkan pada masa yang sesuai, mengelakkan kebocoran memori dan ketidakkonsistenan.

Kitaran hayat Servlet merujuk kepada keseluruhan proses daripada penciptaan kepada pemusnahan servlet, yang boleh dibahagikan kepada tiga peringkat: 1. Peringkat permulaan, memanggil kaedah init() untuk memulakan Servlet 2. Peringkat berjalan (permintaan pemprosesan), bekas akan Meminta untuk mencipta objek ServletRequest yang mewakili permintaan HTTP dan objek ServletResponse yang mewakili respons HTTP, dan kemudian menghantarnya sebagai parameter kepada kaedah Servlet's service() 3. Fasa pemusnahan.

Untuk mengelakkan kebuluran benang, anda boleh menggunakan kunci yang adil untuk memastikan peruntukan sumber yang adil, atau menetapkan keutamaan benang. Untuk menyelesaikan penyongsangan keutamaan, anda boleh menggunakan warisan keutamaan, yang meningkatkan keutamaan utas yang memegang sumber buat sementara waktu atau menggunakan promosi kunci, yang meningkatkan keutamaan utas yang memerlukan sumber.

Vue3 kini merupakan salah satu rangka kerja paling popular di dunia hadapan, dan fungsi kitaran hayat Vue3 ialah bahagian yang sangat penting dalam Vue3. Fungsi kitaran hayat Vue3 membolehkan kami mencetuskan peristiwa tertentu pada masa tertentu, meningkatkan tahap kebolehkawalan komponen yang tinggi. Artikel ini akan meneroka dan menerangkan secara terperinci konsep asas fungsi kitaran hayat Vue3, peranan dan penggunaan setiap fungsi kitaran hayat dan kes pelaksanaan, untuk membantu pembaca menguasai fungsi kitaran hayat Vue3 dengan cepat. 1. Fungsi kitaran hayat Vue3

Uniapp ialah rangka kerja pembangunan aplikasi merentas platform yang boleh membina aplikasi iOS, Android dan Web pada masa yang sama. Dalam proses pembangunan aplikasi, fungsi cangkuk kitaran hayat komponen adalah bahagian yang sangat penting Ia digunakan untuk melaksanakan operasi yang sepadan pada nod masa tertentu. Biasanya, fungsi kitaran hayat komponen dilaksanakan secara automatik apabila peristiwa tertentu dicetuskan, seperti pemuatan halaman selesai, komponen memasuki paparan, komponen dikeluarkan daripada paparan, dsb. Walau bagaimanapun, kadangkala kita perlu mencetuskan fungsi cangkuk kitaran hayat komponen secara manual untuk mencapai yang tertentu

Kitaran hayat coroutine Go boleh dikawal dengan cara berikut: Buat coroutine: Gunakan kata kunci go untuk memulakan tugas baharu. Tamatkan coroutine: tunggu semua coroutine selesai, gunakan sync.WaitGroup. Gunakan isyarat penutup saluran. Gunakan konteks konteks.Konteks.