當前位置:妙知谷 >

遊戲數碼 >網際網路 >

執行緒間同步的方法

執行緒間同步的方法

想了解執行緒同步的方法就得先知道什麼是執行緒,然後執行緒怎麼建立的,再然後就是去實現執行緒的同步。
什麼是執行緒?
執行緒是電腦程式執行時的最小單元,一個電腦程式執行會有一個或多個執行緒存在。
下面我會以java程式碼來講解執行緒間的同步方法。

操作方法

(01)首先我們得帶著問題去學習,執行緒為何會有同步一說?在java中是允許多執行緒併發控制,當有多個執行緒同時操作同一個資源時,很有可能導致資料不準確,相互之間產生衝突。打個比方:我們買火車票時某個車次的火車票只剩一張,而正好A和B同時進行購買該車票,在不同步的情況下A和B可能會都收到購買成功的結果,他們購買到的是同一張票,這顯然不合理。而在同步的情況下是不可能出現該種情況的。所以加入同步鎖是為了避免在該執行緒沒完成操作之前不被其他執行緒呼叫,從而達到資源的唯一性和準確性。我這用的是NetBeans估計非主流了,現在大多用的是myeclipse/eclipse。如圖:

執行緒間同步的方法
執行緒間同步的方法 第2張

(02)新建一個專案,我這就叫Thread_demo了。名字看自己心情命名就好。

執行緒間同步的方法 第3張

(03)同步方法:synchronized關鍵字修飾的方法即為方法的同步程式碼:public synchronized void 方法名() {需要同步的內容...}如圖:

執行緒間同步的方法 第4張

(04)同步程式碼塊:synchronized關鍵字修飾的語句塊即為方法塊的同步程式碼:synchronized(object){需要同步的內容...}如圖:

執行緒間同步的方法 第5張

(05)執行緒的同步對電腦的開銷是很大的,我們應該儘量避免同步的使用,或者說能縮小同步的範圍就儘量減少,能同步程式碼塊的就不要去同步整個方法。下面附上執行緒同步的運用:package thread_demo;/**** @author Admin*/public class Thread_Demo {class Bank {private int account = 100;public int getAccount() {return account;}/*** 同步方法實現* @param money*/public synchronized void add(int money) {account += money;}/*** 同步程式碼塊實現* @param money*/public void add1(int money) {synchronized (this) {account += money;}}}class CreateThread implements Runnable {private Bank bank;public CreateThread(Bank bank) { = bank;}@Overridepublic void run() {for (int i = 0; i < 10; i++) {(10);tln(i + "賬戶餘額:" + ccount());}}}/*** 建立執行緒,呼叫內部類*/public void exeThread() {Bank bank = new Bank();CreateThread new_thread = new CreateThread(bank);tln("執行緒1");Thread thread1 = new Thread(new_thread);t();tln("執行緒2");Thread thread2 = new Thread(new_thread);t();}public static void main(String[] args) {Thread_Demo td = new Thread_Demo();hread();}}如圖:1:為加synchronized關鍵詞的結果,即同步得到的結果2:為不加synchronized關鍵詞的結果,即不同步得到的結果

執行緒間同步的方法 第6張
執行緒間同步的方法 第7張

特別提示

這只是大java實現執行緒同步的其中一種形式哦~

各位看官如有幫到你的還請動動你的小手指點個贊投個票喲!

標籤: 執行緒 同步
  • 文章版權屬於文章作者所有,轉載請註明 https://miaozhigu.com/zh-tw/sm/hulianwang/m2j224.html