併發程式設計筆記(一) 多執行緒

2021-08-28 23:17:28 字數 882 閱讀 3204

一、我們為什麼要使用多執行緒

首先要了解一點,我們跑程式最耗時的是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...