## Java 多線程
為了解決負載均衡問題,充分利用CPU資源.為了提高CPU的使用率,采用多線程的方式去同時完成幾件事情而不互相干擾.為了處理大量的IO操作時或處理的情況需要花費大量的時間等等,比如:讀寫文件,視頻圖像的采集,處理,顯示,保存等
### 多線程的好處:
1. 使用線程可以把占據時間長的程序中的任務放到后臺去處理
2. 用戶界面更加吸引人,這樣比如用戶點擊了一個按鈕去觸發某件事件的處理,可以彈出一個進度條來顯示處理的進度
3. 程序的運行效率可能會提高
4. 在一些等待的任務實現上如用戶輸入,文件讀取和網絡收發數據等,線程就比較有用了.
### 多線程的缺點:
1. 如果有大量的線程,會影響性能,因為操作系統需要在它們之間切換.
2. 更多的線程需要更多的內存空間
3. 線程中止需要考慮對程序運行的影響.
4. 通常塊模型數據是在多個線程間共享的,需要防止線程死鎖情況的發生
## 多線程的實現
1. 通過實現 Runnable 接口
2. 通過繼承 Thread 類本身
## 線程的幾個主要概念
在多線程編程時,你需要了解以下幾個概念:
1. 線程同步
2. 線程間通信
3. 線程死鎖
4. 線程控制:掛起、停止和恢復
## 多線程的使用
1. 有效利用多線程的關鍵是理解程序是并發執行而不是串行執行的。例如:程序中有兩個子系統需要并發執行,這時候就需要利用多線程編程。
2. 通過對多線程的使用,可以編寫出非常高效的程序。不過請注意,如果你創建太多的線程,程序執行的效率實際上是降低了,而不是提升了。
3. 請記住,上下文的切換開銷也很重要,如果你創建了太多的線程,CPU 花費在上下文的切換的時間將多于執行程序的時間!
### 如何共享線程之間的數據
https://blog.csdn.net/hejingyuan6/article/details/47053409
https://blog.csdn.net/zhh1072773034/article/details/74240897?locationNum=8&fps=1
- 空白目錄
- 自我介紹
- Android面試題
- Handler
- 網絡請求框架
- 圖片處理框架Picasso,Glide
- Android最佳性能實踐OOM
- 異步:RxJava,AsyncTask
- View,ViewGroup事件分發
- 消息傳遞:EventBus
- HTTPS和HTTP的區別
- 進程間通信的方式
- HttpClient與HttpUrlConnection的區別
- 性能優化
- Java多線程
- Fragment狀態保持和恢復
- 講解一下Context
- JNI
- java虛擬機和Dalvik虛擬機的區別
- 線程sleep和wait有什么區別
- 保存Activity狀態
- WebView與js交互(調用哪些API)
- 內存泄露檢測,內存性能優化
- 布局優化
- 自定義view和動畫
- 設計模式(單例,工廠,觀察者。作用,使用場景)
- String,Stringbuffer,Stringbuilder 區別
- 開源框架,為什么使用,與別的有什么區別
- Android大廠面試題
- 愛奇藝
- 小米
- 騰訊
- 阿里
- 今日頭條
- 共同問到的
- 其他問題
- 框架MVC、MVP、MVVM
- sleep和wait有什么區別
- React Native原理
- React Native面試題
- 數據結構
- Android開發
- 基礎知識
- Java基礎
- 數據結構
- 面向對象思想
- 設計模式
- 開發環境
- Android SDK
- Activity
- Service
- Broadcastreceiver
- Contentprovider
- ActionBar
- Fragment
- UI
- 通信
- 數據持久化
- 性能
- 調試
- 適配
- 測試
- 安全
- NDK
- 手機功能
- 第三方擴展
- 其他
- 2018 Java面試題
- Android(2017-2018)BAT面試題整理
- 2017下半年,一二線互聯網公司Android面試題匯總
- 2018阿里Android面試題
- 一面
- 二面
- 三面