国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah Java JavaSoalan temu bual 面試官:請你說一下sleep()、wait()、join()和yield()的區(qū)別

面試官:請你說一下sleep()、wait()、join()和yield()的區(qū)別

Mar 01, 2021 am 10:18 AM
temuduga

面試官:請你說一下sleep()、wait()、join()和yield()的區(qū)別

我們先來介紹下鎖池與等待池的概念。

首先來看下鎖池的概念

所有需要競爭同步鎖的線程都會放在鎖池當中,比如當前對象的鎖已經(jīng)被其中一個線程得到,則其它線程需要在這個鎖池進行等待,當前面的線程釋放同步鎖侯鎖池中的線程去競爭同步鎖,當某個線程得到后會進入就緒隊列進行等待cpu資源分配。

接著來看看等待池的概念

當我們調(diào)用wait() 方法后,線程會放到等待池中,等待池的線程是不會去競爭同步鎖。只有調(diào)用了notify() 或notifyAll() 后等待池的線程才會開始去競爭鎖,notify() 是隨機從等待池選出一個線程放到鎖池,而notifyAll() 是將等待池的所有線程放到鎖池當中。

  • sleep 是 Thread 類的靜態(tài)本地方法,wait 則是Object的本地方法。

  • sleep 方法不會釋放lock,但是wait 會釋放,而且會加入到等待隊列中。

sleep就是把cpu的執(zhí)行資格和執(zhí)行權(quán)釋放出去,不再運行此線程,當定時事件結(jié)束再取回cpu資源,參與cpu的調(diào)度,獲取到cpu資源后就可以繼續(xù)運行了,而如果sleep時該線程有鎖,那么sleep不會釋放這個鎖,而是把鎖帶著進入了凍結(jié)狀態(tài),也就是說其它需要這個鎖的線程根本不可能獲取到這個鎖。也就是說無法執(zhí)行程序,如果在睡眠期間其它線程調(diào)用了這個線程的interrupt方法,那么這個線程也會拋出interruptexception異常返回,這點和wait是一樣的。
  • sleep方法不依賴于同步器synchronized,但是wait需要依賴synchronized關(guān)鍵字。

  • sleep不需要被喚醒(休眠之后退出阻塞),但是wait需要(不指定時間需要被別人中斷)。

  • sleep一般用于當前線程休眠,或者輪詢暫停操作,wait則多用于多線程之間的通信。

  • sleep會讓出CPU執(zhí)行時間且強制上下文切換,而wait則不一定,wait后可能還是有機會重新競爭到鎖繼續(xù)執(zhí)行的。

yield() 執(zhí)行后線程直接進入就緒狀態(tài),馬上釋放了cpu的執(zhí)行權(quán),但是依然保留了cpu的執(zhí)行資格,所以由可能cpu下次進行線程調(diào)度還會讓這個線程獲取到執(zhí)行權(quán)繼續(xù)執(zhí)行。

(學習視頻分享:java視頻教程

join() 執(zhí)行后線程進入阻塞狀態(tài),例如在線程B中調(diào)用線程A的join() ,那線程B會進入到阻塞隊列,指導線程A結(jié)束或中斷線程。

public static void main(String[] args) throws InterruptedException {
        Thread t1=new Thread(()->{
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("休眠sleep線程");
        });
        t1.start();
        t1.join();
        System.out.println("線程執(zhí)行完成");
    }

原文鏈接:https://blog.csdn.net/lxn1023143182/article/details/114134498

相關(guān)推薦:java面試題及答案

Atas ialah kandungan terperinci 面試官:請你說一下sleep()、wait()、join()和yield()的區(qū)別. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mari kita bincangkan tentang cara memilih imej Node.js Docker terbaik? Mari kita bincangkan tentang cara memilih imej Node.js Docker terbaik? Dec 13, 2022 pm 08:00 PM

Memilih imej Docker untuk Node mungkin kelihatan seperti perkara remeh, tetapi saiz dan potensi kelemahan imej itu boleh memberi kesan yang ketara pada proses dan keselamatan CI/CD anda. Jadi bagaimana kita memilih imej Node.js Docker yang terbaik?

Bagaimana untuk menyelesaikan isu merentas domain? Analisis ringkas penyelesaian biasa Bagaimana untuk menyelesaikan isu merentas domain? Analisis ringkas penyelesaian biasa Apr 25, 2023 pm 07:57 PM

Cross-domain ialah senario yang sering dihadapi dalam pembangunan, dan ia juga merupakan isu yang sering dibincangkan dalam temu bual. Menguasai penyelesaian merentas domain biasa dan prinsip di sebaliknya bukan sahaja boleh meningkatkan kecekapan pembangunan kami, tetapi juga menunjukkan prestasi yang lebih baik dalam temu duga.

Satu artikel untuk memahami corak tunggal dalam JavaScript Satu artikel untuk memahami corak tunggal dalam JavaScript Apr 25, 2023 pm 07:53 PM

Corak singleton JS ialah corak reka bentuk yang biasa digunakan yang memastikan bahawa kelas hanya mempunyai satu contoh. Mod ini digunakan terutamanya untuk mengurus pembolehubah global untuk mengelakkan konflik penamaan dan pemuatan berulang. Ia juga boleh mengurangkan penggunaan memori dan meningkatkan kebolehselenggaraan dan skalabiliti.

Koleksi soalan temuduga kerangka Golang Koleksi soalan temuduga kerangka Golang Jun 02, 2024 pm 09:37 PM

Rangka kerja Go ialah satu set komponen yang memanjangkan perpustakaan terbina dalam Go, menyediakan kefungsian pra-bina (seperti pembangunan web dan operasi pangkalan data). Rangka kerja Go yang popular termasuk Gin (pembangunan web), GORM (operasi pangkalan data) dan RESTful (pengurusan API). Middleware ialah corak pemintas dalam rantai pemprosesan permintaan HTTP dan digunakan untuk menambah fungsi seperti pengesahan atau pengelogan permintaan tanpa mengubah suai pengendali. Pengurusan sesi mengekalkan status sesi dengan menyimpan data pengguna Anda boleh menggunakan gorila/sesi untuk mengurus sesi.

Soalan temuduga JPA Java terpilih: Uji penguasaan anda terhadap rangka kerja kegigihan Soalan temuduga JPA Java terpilih: Uji penguasaan anda terhadap rangka kerja kegigihan Feb 19, 2024 pm 09:12 PM

Apa itu JPA? Bagaimanakah ia berbeza daripada JDBC? JPA (JavaPersistence API) ialah antara muka standard untuk pemetaan hubungan objek (ORM), yang membenarkan pembangun Java menggunakan objek Java biasa untuk mengendalikan pangkalan data tanpa menulis pertanyaan SQL secara langsung terhadap pangkalan data. JDBC (JavaDatabaseConnectivity) ialah API standard Java untuk menyambung ke pangkalan data Ia memerlukan pembangun menggunakan pernyataan SQL untuk mengendalikan pangkalan data. JPA merangkum JDBC, menyediakan API yang lebih mudah dan tahap lebih tinggi untuk pemetaan hubungan objek, dan memudahkan operasi capaian data. Dalam JPA, apakah entiti? entiti

Bagaimanakah JavaScript menentukan jenis data? 8 cara untuk berkongsi Bagaimanakah JavaScript menentukan jenis data? 8 cara untuk berkongsi Feb 16, 2023 pm 02:48 PM

Bagaimanakah JavaScript menentukan jenis data? Artikel ini akan berkongsi dengan anda 8 cara untuk menggunakan JS untuk menentukan jenis data, yang boleh membantu kerja dan temu bual dengan berkesan.

Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node Mari kita bincangkan tentang modul url dan modul rentetan pertanyaan dalam Node Feb 23, 2023 pm 07:39 PM

Modul url dan modul rentetan pertanyaan ialah dua modul pemprosesan URL yang sangat penting. Ia sering digunakan semasa membangunkan pelayan nod.

100 soalan temuduga PHP biasa (dengan analisis) untuk meningkatkan rizab pengetahuan anda! 100 soalan temuduga PHP biasa (dengan analisis) untuk meningkatkan rizab pengetahuan anda! May 11, 2022 am 10:45 AM

Artikel ini menyusun dan berkongsi 100 soalan temuduga PHP biasa (dengan jawapan dikongsi) untuk membantu anda menyusun pengetahuan asas dan meningkatkan rizab pengetahuan PHP anda. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

See all articles