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