TIL - 2022

μ›ν‹°λ“œ 12μ›” ν”„λ¦¬μ˜¨λ³΄λ”© 사전 과제

λ°”λž„ 희 2022. 11. 28. 14:28

πŸ§™πŸ» (1) 동기와 비동기 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ 차이점을 μ„€λͺ…ν•΄μ£Όμ„Έμš”.

λ™κΈ°λŠ” μš”μ²­κ³Ό κ²°κ³Όκ°€ λ™μ‹œμ— μΌμ–΄λ‚œλ‹€. μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ”λ™μ•ˆ λ‹€λ₯Έ μš”μ²­μ„ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜κ³  λŒ€κΈ°ν•΄μ•Ό ν•œλ‹€.

μˆœμ„œμ— 맞좰 μ§„ν–‰λœλ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ, μ²˜λ¦¬ν•˜λŠ” λ™μ•ˆ λŒ€κΈ°ν•΄μ•Ό ν•œλ‹€λŠ” 단점이 μžˆλ‹€. μΉ΄νŽ˜μ—μ„œ 점원이 λ‹€λ₯Έ 주문을 λ°›μ§€ μ•Šκ³  컀피λ₯Ό μ œμ‘°ν•˜λŠ” λ™μ•ˆ λŒ€κΈ°ν•΄μ•Ό ν•˜λŠ” 것과 κ°™λ‹€.

λΉ„λ™κΈ°λŠ” μš”μ²­κ³Ό κ²°κ³Όκ°€ λ™μ‹œμ— μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€. 응닡에 λŒ€ν•œ μ²˜λ¦¬κ°€ λ°”λ‘œ 이루어지지 μ•Šκ³  λ‹€λ₯Έ μš”μ²­μ„ λ™μ‹œμ— μ²˜λ¦¬ν•  수 μžˆλ‹€.

μ—¬λŸ¬κ°œμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ, 속도가 μ €ν•˜λ  수 μžˆλ‹€λŠ” 단점이 μžˆλ‹€.

μΉ΄νŽ˜μ—μ„œ ν•œ 점원이 컀피λ₯Ό μ œμ‘°ν•˜λŠ” λ™μ•ˆ λ‹€λ₯Έ 점원이 주문을 λ°›λŠ” 것과 κ°™λ‹€.

 

πŸ§™πŸ» (2) λΈ”λ‘œν‚Ήκ³Ό λ…ΌλΈ”λ‘œν‚Ήμ˜ 차이점을 μ„€λͺ…ν•΄μ£Όμ„Έμš”.

λΈ”λ‘œν‚Ήμ€ A ν•¨μˆ˜κ°€ B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μ œμ–΄κΆŒμ΄ A ν•¨μˆ˜μ—μ„œ B ν•¨μˆ˜λ‘œ λ„˜μ–΄κ°„λ‹€. B ν•¨μˆ˜λŠ” 싀행이 μ’…λ£Œλ˜λ©΄ μ œμ–΄κΆŒμ΄ A ν•¨μˆ˜λ‘œ  λ‹€μ‹œ λ„˜μ–΄κ°„λ‹€. λ…ΌλΈ”λ‘œν‚Ήμ€ A ν•¨μˆ˜κ°€ B ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μ—¬μ „νžˆ A ν•¨μˆ˜λŠ” μ œμ–΄κΆŒμ„ κ°–κ³  있고 B의 μ‹€ν–‰ μ’…λ£Œ 여뢀와 상관없이 κ³„μ†ν•΄μ„œ μ‹€ν–‰ν•œλ‹€. 

 

πŸ§™πŸ» (3) 본인이 주둜 μ‚¬μš©ν•˜λŠ” μ–Έμ–΄μ—μ„œ 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ‚¬μš©ν•˜λŠ” 방법을 μ„€λͺ…ν•΄μ£Όμ„Έμš”.

μ“°λ ˆλ“œ 풀에 μ“°λ ˆλ“œ λͺ‡κ°œλ₯Ό 미리 생성해두고, λ‹€λ₯Έ μ“°λ ˆλ“œλ₯Ό ν†΅ν•΄μ„œ μš”μ²­μ„ μ „μ†‘ν•œλ‹€.

μ“°λ ˆλ“œ μ‚¬μš©μ‹œ, λ©”μ„œλ“œμ˜ μ‹€ν–‰ 여뢀와 λ°˜ν™˜κ°’μ„ μ•ŒκΈ° μœ„ν•΄μ„œ Callback을 μ΄μš©ν•œλ‹€.

static ExecutorService executorService = Executors.newFixedThreadPool(10);
	
public void request() {
		
	executorService.submit(new Runnable() {
		@Override
		public void run() {
			//μ½”λ“œ μž‘μ„±
		}            
	});
}

 

πŸ§™πŸ» (4) λ©”μ„Έμ§€ 큐λ₯Ό μ“°λŠ” μ΄μœ μ— λŒ€ν•˜μ—¬ 2κ°€μ§€ μ˜ˆμ‹œλ₯Ό μ„œμˆ ν•΄μ£Όμ„Έμš”.

λ©”μ„Έμ§€ νλŠ” 일반적으둜 ν•΅μ‹¬μž‘μ—…λ³΄λ‹€λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 뢀가적인 κΈ°λŠ₯에 μ‚¬μš©ν•˜λŠ”κ²Œ μ ν•©ν•œ κΈ°λŠ₯이닀. λ°˜λ“œμ‹œ μ‚¬μš©λ  정보라고 보μž₯λ˜μ§„ μ•Šλ”λΌλ„, μ–Έμ  κ°€ μƒμ‚°μžμ—κ²Œμ„œ κ°€μ Έκ°€ μ†ŒλΉ„μžκ°€ κ°€μ Έκ°€ μ‚¬μš©ν•΄ 처리될 것이라고 λ―Ώμ–΄μ§€λŠ” κ²½μš°μ— μ‚¬μš©λœλ‹€. λ˜ν•œ ν”„λ‘œμ„ΈμŠ€ λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜λŠ” μ›Ή μš”μ²­μ΄λ‚˜ 일반적인 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜λŠ”λ° μ‚¬μš©μžκ°€ λ§Žμ•„μ§€κ±°λ‚˜ 데이터가 λ§Žμ•„μ§€λ©΄ μš”μ²­μ— λŒ€ν•œ 응닡을 κΈ°λ‹€λ¦¬λŠ” μˆ˜κ°€ μ¦κ°€ν•˜λ‹€κ°€ λ‚˜μ€‘μ—λŠ” λŒ€κΈ° μ‹œκ°„μ΄ μ§€μ—°λ˜μ–΄μ„œ μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ λ˜μ§€ λͺ»ν•˜λŠ” 상황이 였기 λ•Œλ¬Έμ— 기쑴에 λΆ„μ‚°λ˜μ–΄ 있던 데이터 처리λ₯Ό ν•œ 곳에 μ§‘μ€‘ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•œλ‹€.

 

1. 이메일 전솑

- λΉ„λ°€λ²ˆν˜Έλ₯Ό λΆ„μ‹€ν•˜κ³  μ΄λ©”μΌλ‘œ μΈμ¦μ½”λ“œλ₯Ό λ°›λŠ” 경우, μ–΄λŠ μ •λ„μ˜ λŒ€κΈ° μ‹œκ°„μ΄ ν—ˆμš©λ˜λ©΄μ„œλ„ λ°˜λ“œμ‹œ λ©”μ‹œμ§€κ°€ μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ— 이메일 전솑 μ‹œμ— λ©”μ‹œμ§€ 큐λ₯Ό μ‚¬μš©ν•œλ‹€.

 

2. λΈ”λ‘œκ·Έ ν¬μŠ€νŒ…

- κ³ μš©λŸ‰μ˜ 이미지λ₯Ό μ—…λ‘œλ“œν•˜κ³ μž ν•˜λŠ” κ²½μš°μ—, μ—…λ‘œλ“œ μ‹œμ—λŠ” μš°μ„ μ μœΌλ‘œ 이미지λ₯Ό μ €μž₯μ†Œμ— μ €μž₯ν•˜κ³  좔후에 λ©”μ‹œμ§€ 큐 λ‚΄λΆ€μ—μ„œ μ΅œμ ν™”λ₯Ό 거친 뒀에 μ €μž₯ν•œ 이미지λ₯Ό λŒ€μ²΄ν•œλ‹€.