發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
進(jìn)程與線程
進(jìn)程
是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位;
進(jìn)程在執(zhí)行時(shí)通常擁有獨(dú)立的內(nèi)存單元
線程
是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。
線程的劃分尺度小于進(jìn)程,這使得多線程程序的并發(fā)性高;
線程之間可以共享內(nèi)存
使用多線程的編程通常能夠帶來(lái)更好的性能和用戶體驗(yàn),但是多線程的程序?qū)τ谄渌绦蚴遣挥押玫?,因?yàn)樗赡苷加昧烁嗟腃PU資源。
當(dāng)然,也不是線程越多,程序的性能就越好,因?yàn)榫€程之間的調(diào)度和切換也會(huì)浪費(fèi)CPU時(shí)間。
Thread類的sleep()方法和對(duì)象的wait()方法區(qū)別
sleep()
方法(休眠),是線程類(Thread)的靜態(tài)方法,調(diào)用此方法會(huì)讓當(dāng)前線程暫停執(zhí)行指定的時(shí)間,將執(zhí)行機(jī)會(huì)(CPU)讓給其他線程,但是對(duì)象的鎖依然保持,因此休眠時(shí)間結(jié)束后會(huì)自動(dòng)恢復(fù)(線程回到就緒狀態(tài),請(qǐng)參考第66題中的線程狀態(tài)轉(zhuǎn)換圖)。
wait()
是Object類的方法,調(diào)用對(duì)象的wait()方法導(dǎo)致當(dāng)前線程放棄對(duì)象的鎖(線程暫停執(zhí)行),進(jìn)入對(duì)象的等待池(wait pool),只有調(diào)用對(duì)象的notify()方法(或notifyAll()方法)時(shí)才能喚醒等待池中的線程進(jìn)入等鎖池(lock pool),如果線程重新獲得對(duì)象的鎖就可以進(jìn)入就緒狀態(tài)。
來(lái)自: windxn > 《Java技術(shù)指南》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶 評(píng)論公約
帶你入門java-多線程
在上面我們提到,一個(gè)進(jìn)程可以并發(fā)出多個(gè)線程,而線程就是最小的任務(wù)執(zhí)行單元,具體來(lái)說(shuō),一個(gè)程序順序執(zhí)行的流程就是一個(gè)線程,我們常...
sleep和wait區(qū)別
sleep和wait區(qū)別1. sleep和wait都是用來(lái)進(jìn)行線程控制,他們最大本質(zhì)的區(qū)別是: sleep()不釋放同步鎖,wait()釋放同步鎖. sleep(milliseconds)可以用時(shí)間指定來(lái)使他自動(dòng)醒過(guò)來(lái),如果時(shí)...
并發(fā)編程最基礎(chǔ)的12個(gè)面試連環(huán)炮,你答得上幾個(gè)?
3、線程有哪些狀態(tài)?如果我們直接調(diào)用run方法就和我們調(diào)用一個(gè)普通實(shí)例對(duì)象的方法一樣,不是創(chuàng)建一個(gè)線程,僅僅就是一次普通實(shí)例對(duì)象的...
java線程的幾個(gè)概念和方法
線程的幾個(gè)方法:join():等待此線程死亡后再繼續(xù),可使異步線程變?yōu)橥骄€程interrupt():中斷線程,被中斷線程會(huì)拋InterruptedException.如果希望明確地讓一個(gè)線程給另外一個(gè)線程運(yùn)行的機(jī)會(huì),可以采...
synchronized(){} 放在while里面和外面區(qū)別 可見(jiàn)性 同步代碼塊 并發(fā) 多線程
# 調(diào)用obj.wait()后,線程A就釋放了obj的鎖,否則線程B無(wú)法獲得obj鎖,也就無(wú)法在synchronized(obj) {...} 代碼段內(nèi)喚醒A。obj.wait會(huì)使線程進(jìn)入obj對(duì)象的等待集合中并等待喚醒。如果此刻線程B正在wait...
Java線程的5種狀態(tài)及切換(透徹講解)
處于RUNNING狀態(tài)的線程變?yōu)锽LOCKED狀態(tài)的原因,除了該線程調(diào)用了sleep方法、等待輸入原因外,還有就是在當(dāng)前線程中調(diào)用了其他線程的join...
第7章 多線程
當(dāng)創(chuàng)建了多個(gè)線程并要執(zhí)行這些線程時(shí),操作系統(tǒng)不知到底該執(zhí)行哪個(gè)線程,當(dāng)設(shè)置好優(yōu)先級(jí)后,程序首先會(huì)執(zhí)行優(yōu)先級(jí)最高的線程,然后依次執(zhí)行下去。【答】當(dāng)幾個(gè)線程共享數(shù)據(jù)時(shí),一個(gè)線程的執(zhí)行可能影響...
Java多線程
線程是進(jìn)程的組成部分,一個(gè)進(jìn)程可以有多個(gè)線程,但一個(gè)線程必須只有一個(gè)父進(jìn)程。(1)等待阻塞:運(yùn)行的線程執(zhí)行wait()方法,JVM會(huì)把該...
線程總結(jié)
線程會(huì)在以下三種方式之一結(jié)束線程,處于死亡狀態(tài):1,run方法執(zhí)行完成,線程正常結(jié)束。yield()方法(線程讓步)yield方法和sleep有點(diǎn)相似的方法,讓當(dāng)前正在執(zhí)行的線程暫停,但它不會(huì)阻塞該線程,它只是...
微信掃碼,在手機(jī)上查看選中內(nèi)容