執行緒的基本操作 完

2022-09-11 15:09:39 字數 1014 閱讀 2072

執行緒安全是多執行緒開發的根基, 我們能夠使用volatile保證變數更新的資料其他執行緒能夠看到, 但是如果兩個執行緒同時操作乙個資料, 執行緒安全無法保證.

下面的例子中, i的結果大概率小於我們預期的200000, 原因就在於t1,t2同時獲取i值, 先後寫入同乙個結果.

public class sync implements runnable 

@override

public void run()

} public static void main(string args) throws interruptedexception

}

為保證執行緒的安全, 我們使用synchronized關鍵字去實現執行緒的同步, 通過對同步的**(i++)加鎖來保證安全.

指定加鎖物件 : 給指定物件加鎖

直接作用於例項方法 : 相當於對當前例項加鎖

直接作用於靜態方法: 相當於對當前類加鎖

private static sync sync = new sync();

public volatile static int i = 1;

public static void instance()

@override

public void run()

} }

private static sync sync = new sync();

public volatile static int i = 1;

//去掉static就是, 給例項方法加鎖(執行**的2執行緒指向同乙個runnable才會有效)

public static synchronized void instance()

@override

public void run()

}

執行緒基本操作

函式原型 include int pthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 建立執行緒的函式有四個引數,第...

執行緒的基本操作2

等待 wait 和通知 notify 這兩個方法來自object類,使用前必須先獲得目標的鎖.wait 使用場景必須包含在synchronzied語句中.當呼叫後,執行緒釋放鎖,進入object物件的等待佇列,等待notify notifyall 去喚醒.package threads public...

多執行緒基本操作

1 繼承thread類建立執行緒 2 實現runnable介面建立執行緒 3 使用callable和future建立執行緒 1.實現callable介面,重寫call 方法,建立該實現類的例項 2.使用futuretask類來包裝callable物件,該futuretask物件封裝了callable...