์ ์ฒด ๊ธ
[PGM_42890] ํ๋ณดํค (java)
๋ฌธ์ ๋งํฌ https://programmers.co.kr/learn/courses/30/lessons/42890 ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํ๋ณดํค [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr ๋ฌธ์ ํ์ด ๐จ๐ป๐ป ํต์ฌ ์คํฌ ๐จ๐ป๐ป ์์ ํ์ 1. ๋ฌธ์ ์ดํด DB์ ๋ํ ๋ฆด๋ ์ด์ ์ด ์ฃผ์ด์ง๋ฉด ๊ทธ์ ํด๋นํ๋ ํ๋ณดํค๊ฐ ์ด ๋ช๊ฐ๊ฐ ์กด์ฌํ๋์ง ์ฐพ์๋ด๋ ๋ฌธ์ ์ด๋ค. 2. ์ ๊ทผ๋ฐฉ๋ฒ 1) ์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ ํค๊ฐ ๋ ์ ์๋ ์กฐํฉ์ ๊ตฌํด์ค๋ค. ..
์๋ฐ ์ฐ๋ ๋ Callable๊ณผ Future
Callable๊ณผ Future Runnable๋ก ๋์์ ์คํํ ๋ return๋ฐ๋ ๊ฐ์ด ์๋ค. ๋ฐ๋ผ์ ์ฐ๋ ๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ๊ฐ์ ์ป์ด์ผํ๋ค๋ฉด Runnable์ ์ฌ์ฉํ๋ฉด ์๋๋ค. Callable์ ์ ๋๋ฆญํ์ ์ ๋ฆฌํดํ์ ์ผ๋ก ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ returnํ์ ์ด ํ์ํ๋ค๋ฉด Callable์ฌ์ฉํ๋ฉด ๋๋ค. Future๋ ์ด๋ ๊ฒ ๋์ํ๋ ๋น๋๊ธฐ ์์ ์ ํ์ฌ์ํ๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ์ญํ ์ ์ํํ๋ค. ExecutorService ex = Executors.newFixedThreadPool(3); Callable hello = () -> { Thread.sleep(5000L); return "Hello"; }; Future future = ex.submit(hello); System.out.prin..
์๋ฐ Excuter๋ก ์ฐ๋ ๋ ์ฒ๋ฆฌํ๊ธฐ
Excutors ์์ฒญ๋๊ฒ ๋ง์ ์ฐ๋ ๋๋ฅผ ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฌ์ค์ ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ Executor๋ฅผ ํ์ฉํ์ฌ ์ฐ๋ ๋๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋๋ค. Executer๋ ExcutorServie์ ScheduledExecutorService๊ฐ ์๋ค. ExcutorService๋ ์ฐ๋ ๋๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ๋์ํ๋ ์ญํ ๋ง ์ํํ๋ค๋ฉด, ScheduledExecutorService๋ ์ฐ๋ ๋๋ค์ ๊ฐ์ ์ผ๋ง๋ ๋ค์ ์คํํ ์ง๋ฅผ ์ ๋ ฅํ ์ ์์ด, ์ค์ผ์ฅด๋งํ์ฌ ์คํํด์ค๋ค. ExecutorService //์ฌ์ฉ๋๋ runnable ๋ฉ์๋ private static Runnable getRunnable(String message) { return () -> { System.out.println(message + ":" + Thread.cu..
์๋ฐ ์ฐ๋ ๋์ ๊ธฐ์ด
Thread ๊ธฐ์ด ์ฐ๋ ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ Thread thread = new Thread(()->{ System.out.println("Hello Thread"); }); ์ฐ๋ ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ new Thread()๋ฅผ ํ ๋ Runnable ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ๋ฃ์ด์ค์ผ๋ก์จ ๋ง๋ค์ด์ค ์ ์๋ค. ์ฐ๋ ๋ start thread.start(); ์ฐ๋ ๋๋ฅผ ์์ฑํ์ฌ ์คํํ๊ธฐ ์ํด์๋ start()๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค. ์ฐ๋ ๋ sleep thread.sleep(1000); ์ฐ๋ ๋์์ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋นผ์๊ธฐ ์ํด์ sleep์ ํ ์ ์๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์ฐ๋ ๋๊ฐ ํ๋ ์ผ์ ์ ์ ๋ฉ์ถ๊ณ ๋ฆฌ์์ค๋ฅผ ๋ค๋ฅธ ์ฐ๋ ๋์์ ๋๊ฒจ์ฃผ๊ฒ ๋๋ค. ์ฐ๋ ๋ interrupt Thread thread = new Thread(()->{ while (..