🌏 WEB/JAVA

λ‚΄κ°€ 보렀고 μ •λ¦¬ν•˜λŠ” JAVA λ©€ν‹° μŠ€λ ˆλ“œ 2 - 동기화 λ©”μ„œλ“œμ™€ 동기화 블둝

μ• μ •μ“° 2021. 9. 28. 09:25

동기화 λ©”μ„œλ“œμ™€ 동기화 블둝

λ©€ν‹°μŠ€λ ˆλ“œ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” μŠ€λ ˆλ“œλ“€μ΄ 객체λ₯Ό κ³΅μœ ν•΄μ„œ μž‘μ—…ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€.

μŠ€λ ˆλ“œaκ°€ μ‚¬μš©ν•˜λ˜ 객체λ₯Ό b에 μ˜ν•΄ μƒνƒœκ°€ λ³€κ²½ 될 수 μžˆμ–΄μ„œ aκ°€ μ˜λ„ν–ˆλ˜ 결과와 λ‹¬λΌμ§ˆ 수 있기 λ•Œλ¬Έμ— 

μ‚¬μš©μ€‘μΈ μŠ€λ ˆλ“œμ˜ μž‘μ—…μ΄ 끝날 λ•ŒκΉŒμ§€ 객체에 μž κΈˆμ„ κ±Έμ–΄ λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ‚¬μš©ν•  수 없도둝 ν•΄μ•Ό ν•œλ‹€.

 

단 ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” μž„κ³„ μ˜μ—­μ„ λ§Œλ“€μ–΄μ£Όλ©΄ λœλ‹€. 

-> μŠ€λ ˆλ“œκ°€ 객채 λ‚΄λΆ€μ˜ 동기화 λ©”μ†Œλ“œ λ˜λŠ” 블둝에 λ“€μ–΄κ°€λ©΄ μ¦‰μ‹œ 객체에 μž κΈˆμ„ κ±Έμ–΄ λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ˜μ—­μ— μžˆλŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ λͺ»ν•˜λ„둝 ν•œλ‹€. λ©”μ„œλ“œ μ‹€ν–‰ μ’…λ£Œ 되면 잠금이 ν’€λ¦°λ‹€. 

 

μ‚¬μš©λ°©λ²•μ€ μ•„λž˜μ™€ κ°™λ‹€

public synchronized void method(){
	// μž„κ³„ μ˜μ—­
}

일뢀 λ‚΄μš©λ§Œ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ™€ 같이 블둝을 λ§Œλ“€λ©΄ λœλ‹€

public void method(){
	syncronized(곡유객체){ // 객체 μžμ‹ μ΄λ©΄ thisλ₯Ό 넣을 수 μžˆλ‹€.
    	// μž„κ³„ μ˜μ—­
    }
}

 

μŠ€λ ˆλ“œ1이 μž‘λ™ν•˜λŠ” λ™μ•ˆμ—λŠ” 동기화 λ©”μ„œλ“œ/블둝 은 μž κ²¨μžˆλ‹€ κ·Έλ™μ•ˆ μŠ€λ ˆλ“œ2λŠ” μŠ€λ ˆλ“œ1이 μž‘μ—…μ„ λλ‚Όλ•Œ κΉŒμ§€ κΈ°λ‹€λ¦°λ‹€.

ν•˜μ§€λ§Œ 일반 λ©”μ„œλ“œ 일 κ²½μš°μ—λŠ” μŠ€λ ˆλ“œ1, μŠ€λ ˆλ“œ2 κ°€ λ™μ‹œμ— μž‘μ—…μ„ μ‹€ν–‰ ν•œλ‹€.

 

λ°˜μ‘ν˜•