一、我們為什麼要使用多執行緒
首先要了解一點,我們跑程式最耗時的是io讀寫,所以會出現來了很多請求,卻要等待第乙個請求io結束才能繼續接受下乙個請求,非常影響效率;另外,單執行緒的請求處理是線性的,前端發起請求需要等待後台所有的都處理結束前端才有響應,非常影響體驗。
針對這兩點,多執行緒的優勢在於:
1.資源利用率高
2.程式響應快
二、多執行緒的缺點
多執行緒的上下文切換需要耗費時間,如果處理不好,處理速度反而會變慢;
多執行緒涉及執行緒安全,併發處理,如果處理不好,會造成邏輯混亂,導致結果錯誤;
所以我們使用多執行緒一定要處理好執行緒安全的問題
三、多執行緒的幾種實現方式
1.繼承thread類,重寫run方法
這種方式看過原始碼就知道,thread類其實也是實現了runnable介面
例項**如下
public class threadtest extends thread
public static void main(string args)
}
2.實現runnable介面
**實現如下:
public class runnabletest implements runnable
public static void main(string args)
}
3.使用執行緒池
這種方式是我們實際應用中最推薦的方式,原因有一下幾點
1.建立和銷毀執行緒會消耗時間和資源,如果使用執行緒池就可以大大減少這個時間和資源的消耗
2.執行緒池對執行緒的管理更加方便有條理
如何建立乙個簡單的執行緒池
(還沒掌握這個,待補充。。。)
多執行緒併發程式設計系列(一)多執行緒與鎖的使用
示例程式如下 include include include define thread count 10 void thread callback void arg int main int count 0 for int i 0 i thread count i for int i 0 i 10...
併發基礎之一 多執行緒synchronized
public class demo 簡便的寫法一 public void test 簡便的寫法二 public synchronized void test 在這裡的排序也是有講究的,synchronized雖然在 一 二這裡起到的作用相同。但是synchronied如果只需要一部分 需要上鎖,那麼...
java併發程式設計一一多執行緒之間通訊 一
多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。需求 第乙個執行緒寫入 input 使用者,另乙個執行緒讀取 out 使用者。實現讀乙個,寫乙個操作。示例 class resclass intthrad extends thread override public void...