Java多執行緒之synchronized關鍵字

2021-08-03 22:11:26 字數 863 閱讀 6817

package thread;

public

class

test

}class

ticket

implements

runnable

try catch (interruptedexception e) }}

}}

結果如圖:

從結果可以看到能夠實現多執行緒的買票

package thread;

public

class

test

}class

ticket

implements

runnable

try catch (interruptedexception e)

//}}}}

從結果中可以知道,出現了從錯誤,這是因為當幾個執行緒一起對同乙個值進行操作。因此可以通過使用synchronized關鍵字對要進行操作的值進行加鎖,以避免這樣的而錯誤。

如下圖中的**,在ticket減一的時候使用ticket–時,沒有synchronized關鍵字也能夠實現多執行緒買票的這樣的乙個操作。

而當在票減一的時候使用ticket = ticket - 1;時,如果沒有synchronized關鍵字就不出現錯誤。

我認為產生這樣不同的情況,應該是當使用上面那樣的方式減一的時候,ticket–應該是乙個原子操作吧,而當採用下面的方式ticket = ticket - 1;就不是乙個原子操作了,因此產生了這樣的情況。

JAVA多執行緒之 執行緒池

執行緒池顧名思義,就是乙個放置執行緒的池子。就跟資料庫連線池差不多。執行緒池通過對併發執行緒的控制,能有效的節省系統資源的浪費,提高系統的效能。學習執行緒池,先了解一下執行緒池的乙個基本結構 executor是乙個介面,其中只有乙個方法,就是execute方法。所以executor實際就是乙個執行緒...

Java多執行緒之執行緒安全

當多個執行緒訪問某乙個類 物件或方法時 這個類始終都能表現出正確的行為,那麼這個類 物件或方法 就是執行緒安全的。public class mythread extends thread public static void main string args 結果如下 t1正在執行 4 t1正在執行...

java 多執行緒 之 Excutor

excutor介面 提供了一種將任務提交和任務執行機制相分離的方法 excutorservice介面 提供了excutor的管理介面,以及可為跟蹤乙個或多個非同步任務狀態而生成future的方法 scheduledexcutorservice介面 提供了可以安排在給定的延遲後執行或定時執行的命令 方...