本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識,其中主要介紹了關(guān)于synchronized關(guān)鍵字的相關(guān)問題,包括了使用同步方法、使用同步語句或塊以及什么是同步、為什么需要同步的相關(guān)內(nèi)容,下面一起來看一下,希望對大家有幫助。
程序員必備接口測試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設(shè)計、調(diào)試、文檔、自動化測試工具
后端、前端、測試,同時在線協(xié)作,內(nèi)容實時同步
推薦學(xué)習(xí):《java視頻教程》
在平時開發(fā)中,synchronized關(guān)鍵字經(jīng)常遇到,你知道synchronized怎么用嗎?本文給大家介紹一下。
我們有兩種方法使用同步:
- 使用同步方法
- 使用同步語句或塊
使用同步方法
要使方法同步,只需將synchronized關(guān)鍵字添加到其聲明中:
public class SynchronizedDemo { private int i = 0; public synchronized void add() { i++; } public synchronized void del() { i--; } public synchronized int getValue() { return i; } }
登錄后復(fù)制
如上代碼顯示,一共有三個同步方法:
- add()
- del()
- getValue()
每個方法同一個對象同一時刻只會被調(diào)用一次,比如一個線程在調(diào)用add()時,其他線程都會被阻塞,直到第一個線程處理完add()方法。
使用同步語句或塊
public void del(int value){ synchronized(this){ this.i -= value; } }
登錄后復(fù)制
如上代碼,synchronized加在了一個{}代碼前,這個就代表是一個同步代碼塊。