# 多線程的基本概念
線程指進程中的一個執行場景,也就是執行流程,那么進程和線程有什么區別呢?
* 每個進程是一個應用程序,都有獨立的內存空間
* 同一個進程中的線程共享其進程中的內存和資源(共享的內存是堆內存和方法區內存,棧內存不共享,每個線程有自己的。)
## 什么是進程?
一個進程對應一個應用程序。例如:在 windows 操作系統啟動 Word 就表示啟動了一個
進程。在 java 的開發環境下啟動 JVM,就表示啟動了一個進程。現代的計算機都是支持多
進程的,在同一個操作系統中,可以同時啟動多個進程。
## 多進程有什么作用?
單進程計算機只能做一件事情。
玩電腦,一邊玩游戲(游戲進程)一邊聽音樂(音樂進程)。
對于單核計算機來講,在同一個時間點上,游戲進程和音樂進程是同時在運行嗎?不是。
因為計算機的 CPU 只能在某個時間點上做一件事。由于計算機將在“游戲進程”和“音樂
進程”之間頻繁的切換執行,切換速度極高,人類感覺游戲和音樂在同時進行。
多進程的作用不是提高執行速度,而是提高 CPU 的使用率。
進程和進程之間的內存是獨立的。
## 什么是線程?
線程是一個進程中的執行場景。一個進程可以啟動多個線程。
## 多線程有什么作用?
多線程不是為了提高執行速度,而是提高應用程序的使用率。
線程和線程共享“堆內存和方法區內存”,棧內存是獨立的,一個線程一個棧。
可以給現實世界中的人類一種錯覺:感覺多個線程在同時并發執行。
## java 程序的運行原理?
java 命令會啟動 java 虛擬機,啟動 JVM,等于啟動了一個應用程序,表示啟動了一個進程。該進程會自動啟動一個“主線程”,然后主線程去調用某個類的 main 方法。所以 main方法運行在主線程中。在此之前的所有程序都是單線程的。
- 環境搭建
- maven的安裝
- Eclipse中從svn中檢出maven項目
- 升級JDK9后eclipse無法啟動解決方法
- Maven教程
- spring-boot
- JAVA基礎
- JAVA多線程
- 常見問題
- 怎么解決tomcat占用8080端口問題圖文教程
- 保存到數據庫中亂碼
- idea Tomcat 部署 war和war exploded的區別
- Android
- Android開發之旅:HelloWorld項目的目錄結構
- Android Studio 修改包名最便捷做法
- 2017Android學習路線圖,內附完整自學視頻教程+工具經驗
- Android版本更新知識(檢測、升級)總結
- Android設備唯一碼的獲取
- Android Studio配置打包生成自定義文件名
- 多渠道打包之動態修改App名稱,圖標,applicationId,版本號,添加資源
- JAVA相關技術
- MyBatis 教程
- GUNS后臺管理框架
- 相關技術學習集合
- 開源系統
- 技術博客收藏
- Spring MVC
- Spring MVC微博
- SpringMVC 攔截器不攔截靜態資源的三種處理方式
- 開發工具
- IntelliJ IDE
- IntelliJ IDEA2017 + tomcat 即改即生效 實現熱部署
- IntelliJ IDEA + Tomcat ;On Upate Action 與 On Frame Deactivation
- Shiro
- 跟我學Shiro
- 30分鐘學會如何使用Shiro
- shiro.ini 配置詳解
- Spring
- 談談對Spring IOC的理解
- ConditionalOnProperty的使用
- Tomcat
- Tomcat 部署WAR文件之server.xml Context部署
- Redis
- 使用Jedis源碼生成Jedis.jar
- Nutz
- Nutz-book Nutz烹調向導