99久久久精品免费观看国产,紧身短裙女教师波多野,正在播放暮町ゆう子在线观看,欧美激情综合色综合啪啪五月

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  Java面試題  > java面試題:線程和進程區別

java面試題:線程和進程區別

來源:千鋒教育
發布人:wjy
時間: 2022-07-19 17:21:00 1658222460

  線程和進程區別

  1. 什么是線程和進程?

  1.1 進程

  一個在內存中運行的應用程序。每個進程都有自己獨立的一塊內存空間,一個進程可以有多個線程,比如在Windows系統中,一個運行的xx.exe就是一個進程。

  1.2 線程

  進程中的一個執行任務(控制單元),負責當前進程中程序的執行。一個進程至少有一個線程,一個進程可以運行多個線程,多個線程可共享數據。

  2. 進程與線程的區別

  線程具有許多傳統進程所具有的特征,故又稱為輕型進程(Light—Weight Process)或進程元;而把傳統的進程稱為重型進程(Heavy—Weight Process),它相當于只有一個線程的任務。在引入了線程的操作系統中,通常一個進程都有若干個線程,至少包含一個線程。

  根本區別:進程是操作系統資源分配的基本單位,而線程是處理器任務調度和執行的基本單位。

  資源開銷:每個進程都有獨立的代碼和數據空間(程序上下文),程序之間的切換會有較大的開銷;線程可以看做輕量級的進程,同一類線程共享代碼和數據空間,每個線程都有自己獨立的運行棧和程序計數器(PC),線程之間切換的開銷小。

  包含關系:如果一個進程內有多個線程,則執行過程不是一條線的,而是多條線(線程)共同完成的;線程是進程的一部分,所以線程也被稱為輕權進程或者輕量級進程。

  內存分配:同一進程的線程共享本進程的地址空間和資源,而進程之間的地址空間和資源是相互獨立的

  影響關系:一個進程崩潰后,在保護模式下不會對其他進程產生影響,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯。

  執行過程:每個獨立的進程有程序運行的入口、順序執行序列和程序出口。但是線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制,兩者均可并發執行

線程和進程區別

  3. 什么是上下文切換?

  多線程編程中一般線程的個數都大于 CPU 核心的個數,而一個 CPU 核心在任意時刻只能被一個線程使用,為了讓這些線程都能得到有效執行,CPU 采取的策略是為每個線程分配時間片并輪轉的形式。當一個線程的時間片用完的時候就會重新處于就緒狀態讓給其他線程使用,這個過程就屬于一次上下文切換。

  3.1 概括來說就是

  當前任務在執行完 CPU 時間片切換到另一個任務之前會先保存自己的狀態,以便下次再切換回這個任務時,可以再加載這個任務的狀態。任務從保存到再加載的過程就是一次上下文切換。

  上下文切換通常是計算密集型的。也就是說,它需要相當可觀的處理器時間,在每秒幾十上百次的切換中,每次切換都需要納秒量級的時間。所以,上下文切換對系統來說意味著消耗大量的 CPU 時間,事實上,可能是操作系統中時間消耗最大的操作。

  Linux 相比與其他操作系統(包括其他類 Unix 系統)有很多的優點,其中有一項就是,其上下文切換和模式切換的時間消耗非常少。

  4. 守護線程和用戶線程有什么區別呢?

  4.1 守護線程和用戶線程

  用戶 (User) 線程:運行在前臺,執行具體的任務,如程序的主線程、連接網絡的子線程等都是用戶線程。

  守護 (Daemon) 線程:運行在后臺,為其他前臺線程服務。也可以說守護線程是 JVM 中非守護線程的 “傭人”。一旦所有用戶線程都結束運行,守護線程會隨 JVM 一起結束工作。

  main 函數所在的線程就是一個用戶線程啊,main 函數啟動的同時在 JVM 內部同時還啟動了好多守護線程,比如垃圾回收線程。

  比較明顯的區別之一是用戶線程結束,JVM 退出,不管這個時候有沒有守護線程運行。而守護線程不會影響 JVM 的退出。

  4.2 注意事項

  setDaemon(true)必須在start()方法前執行,否則會拋出 IllegalThreadStateException 異常

  在守護線程中產生的新線程也是守護線程

  不是所有的任務都可以分配給守護線程來執行,比如讀寫操作或者計算邏輯

  守護 (Daemon) 線程中不能依靠 finally 塊的內容來確保執行關閉或清理資源的邏輯。因為我們上面也說過了一旦所有用戶線程都結束運行,守護線程會隨 JVM 一起結束工作,所以守護 (Daemon) 線程中的 finally 語句塊可能無法被執行。

  5. 如何在 Windows 和 Linux 上查找哪個線程cpu利用率最高?

  windows上面用任務管理器看,linux下可以用 top 這個工具看。

  找出cpu耗用厲害的進程pid, 終端執行top命令,然后按下shift+p 查找出cpu利用最厲害的pid號

  根據上面第一步拿到的pid號,top -H -p pid 。然后按下shift+p,查找出cpu利用率最厲害的線程號,比如top -H -p 1328

  將獲取到的線程號轉換成16進制,去百度轉換一下就行

  使用jstack工具將進程信息打印輸出,jstack pid號 > /tmp/t.dat,比如jstack 31365 > /tmp/t.dat

  編輯/tmp/t.dat文件,查找線程號對應的信息。

  更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: yw在线观看成人免费| 69精品久久久久| 男男动漫全程肉无删减彩漫| 国产精品嫩草影院在线| 翁公厨房嫒媛猛烈进出| 日韩黄电影| 国产a三级三级三级| 国产无遮挡又黄又爽在线视频| 学霸c了我一节课| 精品国产人成亚洲区| 性生活大片免费观看| 亚洲春黄在线观看| 91精品国产高清久久久久| 嫩草影院在线免费观看| 玉蒲团在线看| 扒开双腿猛进入免费观看美女| 日本无卡无吗在线| 色婷婷视频| 老子影院我不卡| 色片网址| 悠悠在线观看精品视频| 国产小鲜肉男同志gay| 午夜爽| 免费看黄色a级片| 三级黄在线观看| 再去温泉吧| 亚洲精品社区| 国产午夜精品一区二区三区不卡| 日鲁鲁| 福利视频亚洲| 一级一毛片a级毛片| 免费a级毛片18以上观看精品| 玉蒲团2之玉女心经| 国产性生交xxxxx免费| 狠狠夜色午夜久久综合热91| 国产无套粉嫩白浆在线观看| 一道本免费视频| 亚洲欧美另类日韩| 欧洲最强rapper潮水免费| 要灬要灬再深点受不了好舒服| 动漫洗濯屋|