Thread

閱讀時間約 4 分鐘

程式建立thread,然後會交給硬體中的scheduler去排定執行、切換資源

我們無法強制指定順序,因為電腦有太多任務需要執行,但資源有限,因此會由scheduler去分配、切換資源

電腦能同時執行多項任務,我現在在打字、播youtube聽音樂、跟朋友傳line訊息、下載圖片

雖然程式中可以設定thread的priority,但也只能起到"建議"scheduler的作用,告訴scheduler這一個thread的優先級比較高或比較低,因為還要處理很多跟你程式沒直接關係的任務,因此沒辦法保證一定會依照你設的priority順序執行


Race Condition

如何避免多執行緒同時對一個method或參數做操作? 加上synchronized

class Calculator{
int count;
public synchronized void increment(){
count++;
}
}

因此每次只能有一個thread能使用increment這個method,其他的thread都必須等待


完整程式範例

class Calculator{
int count;
public synchronized void increment(){
count++;
}
}

public class Demo {
public static void main(String[] args) {

Calculator calculator = new Calculator();

Thread t1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
calculator.increment();
}
});

Thread t2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
calculator.increment();
}
});

t1.start();
t2.start();

try {
t1.join();
t2.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}

System.out.println(calculator.count);

}
}

建立兩個thread,t1和t2,分別對Calculator的increment method執行10,000次(數字越大越明顯)

如果第3行沒有synchronized 的話,結果(第35行)就不會輸出預期的20,000

因為中途難免會出現兩個thread同時執行increment的情形

所以需要synchronized


29、30行,join method 的目的是要等thread的內容執行完

才能讓35行印出結果,不然會程式才不會等t1和t2執行完,馬上就會印出結果 0


Thread States 執行緒的狀態

raw-image
  • new: 創建thread
  • runnable: 交給scheduler,待它排定執行(說是排定但其實幾乎都是瞬間的事情)
  • running: 執行
  • waiting: 等待執行完所有該thread該做的事情。做完之後會通知scheduler說可以換別人了
  • dead: 被程式強制終止。常見於終止整個應用程式時


我的Java學習日記
留言0
查看全部
發表第一個留言支持創作者!
Error分為三種 Compile time error Runtime error 俗稱(Exception) Logical error
普通的interface:有一個以上的abstract method Functinal Interface...
所有被宣告在interface中的method都是public abstract 所以interface中的method才不需要特地標上修飾符與abstract interface只體現設計方向 而如何實現此設計
abstract method 一定要在 abstract class裡面 abstract class裡面不一定要有abstract method
public: 可以在任何地方存取(access) private: 只能在同class中存取 default: 只能在同package中存取 protected: 只能在同package,以及它的子class存取。不能在不同package的非子class存取
Java不能同時多重繼承 但是可以多層繼承
Error分為三種 Compile time error Runtime error 俗稱(Exception) Logical error
普通的interface:有一個以上的abstract method Functinal Interface...
所有被宣告在interface中的method都是public abstract 所以interface中的method才不需要特地標上修飾符與abstract interface只體現設計方向 而如何實現此設計
abstract method 一定要在 abstract class裡面 abstract class裡面不一定要有abstract method
public: 可以在任何地方存取(access) private: 只能在同class中存取 default: 只能在同package中存取 protected: 只能在同package,以及它的子class存取。不能在不同package的非子class存取
Java不能同時多重繼承 但是可以多層繼承
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
注意到Threads提供用戶是由哪篇串文來追蹤自己帳戶的,以下幾個指標可以一起來試算看看,分析一下自身和他人帳號和串文的特質。 轉追蹤/按讚數 比例 按讚數/觀看數 比例 留言觀看/ 主串文觀看 比例
Thumbnail
你想用 Threads 經營社群嗎?經營 Threads 之前,你也會擔心 Threads 像其他社群媒體一樣,起初粉絲的觸及率很好,之後就變得不好嗎?以下的 3 個心法期望能夠協助到你,其他的新興社群平臺也適用喔!
Thumbnail
Meta 於 2023 年推出的全新社群媒體 Threads,專注於純文字內容分享,迅速在全球範圍內吸引了大量用戶。截至目前,Threads 每月活躍用戶數已突破 1.75 億人,其中印度、日本和台灣是活躍度最高的三個市場。
Thumbnail
好奇做了個 #測試, 如果當日不發文,把上個月互動率很高的貼文「自己轉發自己」 能不能讓貼文,重新獲得曝光? 實驗結果是可以的,轉發後一天,曝光從 725 => 818, 增加了 12%,留言、追蹤 也都有持續增加, 雖然效果沒有特別好,可能我們帳號還很新, 但如
Thumbnail
真正的工匠不指責工具:科技也是工具 經過超過兩十年的社交媒體演進,從上古神獸我也沒用過的 Myspace到Spill,到我這世代的臉書IG等等,對於這個新工具我們仍然無法確定這一努力是正面還是負面。這種模糊空間也包括Twitter,這個文字為主的應用程式同時也是社會的集體意識呈現,也因
Thumbnail
Threads 推出後怎麼走?使用者都在看什麼、發什麼?根據這幾天的產品使用心得,先快速紀錄我觀察到的產品定位、使用者行為、和未來的產品潛在開發方向。
Thumbnail
你不知道你的所有社群裡,只要你追蹤的人數不夠多,或是他們都習慣不發文,你看到的「就是這樣,是大數據塞給你的資訊」;即使你追蹤的夠多,訊息量夠大了,這些大數據還是會演算那些「為你推薦」而你不感到陌生的訊息給你,讓你「誤以為」那些都是你自己手動加的!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
注意到Threads提供用戶是由哪篇串文來追蹤自己帳戶的,以下幾個指標可以一起來試算看看,分析一下自身和他人帳號和串文的特質。 轉追蹤/按讚數 比例 按讚數/觀看數 比例 留言觀看/ 主串文觀看 比例
Thumbnail
你想用 Threads 經營社群嗎?經營 Threads 之前,你也會擔心 Threads 像其他社群媒體一樣,起初粉絲的觸及率很好,之後就變得不好嗎?以下的 3 個心法期望能夠協助到你,其他的新興社群平臺也適用喔!
Thumbnail
Meta 於 2023 年推出的全新社群媒體 Threads,專注於純文字內容分享,迅速在全球範圍內吸引了大量用戶。截至目前,Threads 每月活躍用戶數已突破 1.75 億人,其中印度、日本和台灣是活躍度最高的三個市場。
Thumbnail
好奇做了個 #測試, 如果當日不發文,把上個月互動率很高的貼文「自己轉發自己」 能不能讓貼文,重新獲得曝光? 實驗結果是可以的,轉發後一天,曝光從 725 => 818, 增加了 12%,留言、追蹤 也都有持續增加, 雖然效果沒有特別好,可能我們帳號還很新, 但如
Thumbnail
真正的工匠不指責工具:科技也是工具 經過超過兩十年的社交媒體演進,從上古神獸我也沒用過的 Myspace到Spill,到我這世代的臉書IG等等,對於這個新工具我們仍然無法確定這一努力是正面還是負面。這種模糊空間也包括Twitter,這個文字為主的應用程式同時也是社會的集體意識呈現,也因
Thumbnail
Threads 推出後怎麼走?使用者都在看什麼、發什麼?根據這幾天的產品使用心得,先快速紀錄我觀察到的產品定位、使用者行為、和未來的產品潛在開發方向。
Thumbnail
你不知道你的所有社群裡,只要你追蹤的人數不夠多,或是他們都習慣不發文,你看到的「就是這樣,是大數據塞給你的資訊」;即使你追蹤的夠多,訊息量夠大了,這些大數據還是會演算那些「為你推薦」而你不感到陌生的訊息給你,讓你「誤以為」那些都是你自己手動加的!