網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好

線程間同步的方法

欄目: 互聯網 / 發佈於: / 人氣:5.62K

想了解線程同步的方法就得先知道什麼是線程,然後線程怎麼創建的,再然後就是去實現線程的同步。
什麼是線程?
線程是電腦程序運行時的最小單元,一個電腦程序運行會有一個或多個線程存在。
下面我會以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實現線程同步的其中一種形式哦~

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

Tags:線程 同步