> 程序(program)
程序? ? =? ? 數(shù)據(jù)結(jié)構(gòu) + 算法(到后面會(huì)慢慢講)
是為完成特定任務(wù)鹊碍、用某種語(yǔ)言編寫(xiě)的一組指令的集合穆役,即指一段靜態(tài)的代碼获三,靜態(tài)對(duì)象旁蔼。
> 進(jìn)程(process)
是程序的一次執(zhí)行過(guò)程,或是正在運(yùn)行的一個(gè)程序疙教。是一個(gè)動(dòng)態(tài)的過(guò)程:有它自身的產(chǎn)生棺聊、存在和消亡的過(guò)程≌晡剑——生命周期
1)如下:
2)程序是靜態(tài)的限佩,進(jìn)程是動(dòng)態(tài)的
3)進(jìn)程作為資源分配的單位,系統(tǒng)在運(yùn)行時(shí)會(huì)為每個(gè)進(jìn)程分配不同的內(nèi)存區(qū)域
并發(fā):? ? ? ??
指兩個(gè)或多個(gè)事件在同一時(shí)間段內(nèi)發(fā)生
并行:
指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生(同時(shí)發(fā)生)
> 線程(thread)
進(jìn)程可進(jìn)一步細(xì)化為線程裸弦,是一個(gè)程序內(nèi)部的一條執(zhí)行路徑犀暑。
進(jìn)程中負(fù)責(zé)程序執(zhí)行的執(zhí)行單元。一個(gè)進(jìn)程中至少有一個(gè)線程烁兰。
線程調(diào)度:
????????優(yōu)先讓優(yōu)先級(jí)高的線程使用 CPU耐亏,如果線程的優(yōu)先級(jí)相同,那么會(huì)隨機(jī)選擇一個(gè)(線程隨機(jī)性)沪斟,Java使用的為搶占式調(diào)度广辰。
1)若一個(gè)進(jìn)程同一時(shí)間并行執(zhí)行多個(gè)線程,就是支持多線程的
> 多線程(multithreading)
2)線程作為調(diào)度和執(zhí)行的單位主之,每個(gè)線程擁有獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(pc)择吊,線程切換的開(kāi)銷(xiāo)小。
3)一個(gè)進(jìn)程中的多個(gè)線程共享相同的內(nèi)存單元/內(nèi)存地址空間槽奕,它們從同一堆中分配對(duì)象几睛,可以訪問(wèn)相同的變量和對(duì)象。這就使得線程間通信更簡(jiǎn)便粤攒、高效所森。但多個(gè)線程操作共享的系統(tǒng)資源可能就會(huì)帶來(lái)安全的隱患囱持。
> 線程池(?thread pool?)
線程池:基本思想還是一種對(duì)象池的思想,開(kāi)辟一塊內(nèi)存空間焕济,里面存放了眾多(未死亡)的線程纷妆,池中線程執(zhí)行調(diào)度由池管理器來(lái)處理。當(dāng)有線程任務(wù)時(shí)晴弃,從池中取一個(gè)掩幢,執(zhí)行完成后線程對(duì)象歸池,這樣可以避免反復(fù)創(chuàng)建線程對(duì)象所帶來(lái)的性能開(kāi)銷(xiāo)上鞠,節(jié)省了系統(tǒng)的資源际邻。
時(shí)間:? ? 2019年12月3日14:00:58