jaehyeonhan
@jaehyeonhan
Reviews Written
-
Average Rating
-
Posts
Q&A
ํ์ผ input,output ๋งํ๋ ์คํธ๋ฆผ์ ๋ป์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
IO ๊ธฐ๋ณธ1 ์ InputStream, OutputStream์ ์ค๋ช ํด์ฃผ์ญ๋๋ค!์ ๋ ์คํธ๋ฆผ์ ํฌ๊ธฐ๊ฐ ๋ฌด์ ํ์ธ ๋ฐ์ดํธ ํ๋ก ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ฝ๋๋ผ๊ตฌ์. ์ฝ์ ๋๋ ๋ด๊ฐ ํ์์ ๋นผ๋ ์ฌ๋์ด ๋๋ ๊ฑฐ๊ณ , ์ธ ๋๋ ํ์ ๋ฃ๋ ์ฌ๋์ด ๋๋ ๊ฑฐ๊ตฌ์. ๋ฐ์ดํธ๊ฐ ์ญ ํ๋ฌ๋ค์ด์ค๋ ํ์ดํ๋ผ๊ณ ๋ณผ ์๋ ์๊ตฌ์. ํ์ง๋ง ํ์ฒ๋ผ ์์๋๋ก ๋ค์ด์์ผํ๊ณ , ํญ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ํ๋ฅด๋ ๊ฑฐ์ฃ .
- 0
- 2
- 169
Q&A
Join ์ค์ต ์ง๋ฌธ
๋ฉ์ธ ์ค๋ ๋๊ฐ RUNNABLE ์ํ์์๋ง log()๋ฅผ ์คํํ ์ ์์ผ๋ฏ๋ก ํญ์ RUNNABLE์ด ์ถ๋ ฅ๋ฉ๋๋ค.์๊ฐํ๋์ ๋์ด ์ ์ด์ฃผ์ ์ฝ๋์ฒ๋ผ ์ํ๋ฅผ ์กฐํํ๋ ์ค๋ ๋์ log๋ฅผ ์ถ๋ ฅํ๋ ์ค๋ ๋๋ฅผ ๋ถ๋ฆฌํ๋ฉด WAITING์ ํ์ธํ ์ ์์ต๋๋ค.์ ๊ฐ ์คํํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ธธ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด SumTask์ ๊ณ์ฐ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ณ Task ์์ฑ ๋ถ๋ถ์ ์ธ๋ผ์ธ์ผ๋ก ๋ฃ์์ต๋๋ค.package thread.control.test; import static util.MyLogger.log; import static util.ThreadUtils.sleep; public class JoinMainV3 { public static void main(String[] args) { Thread mainTask = new Thread(new MainTask(), "MainTask"); mainTask.start(); log("MainTask ์ค๋ ๋ ์ํ: " + mainTask.getState()); sleep(1000); log("MainTask ์ค๋ ๋ ์ํ: " + mainTask.getState()); sleep(1500); log("MainTask ์ค๋ ๋ ์ํ: " + mainTask.getState()); } static class MainTask implements Runnable { @Override public void run() { log("Start"); Thread thread1 = new Thread(new Task(), "thread-1"); Thread thread2 = new Thread(new Task(), "thread-2"); thread1.start(); thread2.start(); log("join() - MainTask ์ค๋ ๋ ๋๊ธฐ ์์"); try { thread1.join(); thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } log("MainTask ์ค๋ ๋ ๋๊ธฐ ์๋ฃ"); log("End"); } } static class Task implements Runnable { @Override public void run() { log("์์ ์์"); sleep(2000); log("์์ ์๋ฃ"); } } }๋ก๊ทธ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ ๋ฒ์งธ ์กฐํ ์ WAITING ์ํ๊ฐ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.11:02:29.123 [ main] MainTask ์ค๋ ๋ ์ํ: RUNNABLE 11:02:29.124 [ MainTask] Start 11:02:29.143 [ MainTask] join() - MainTask ์ค๋ ๋ ๋๊ธฐ ์์ 11:02:29.146 [ thread-1] ์์ ์์ 11:02:29.147 [ thread-2] ์์ ์์ 11:02:30.149 [ main] MainTask ์ค๋ ๋ ์ํ: WAITING 11:02:31.155 [ thread-2] ์์ ์๋ฃ 11:02:31.155 [ thread-1] ์์ ์๋ฃ 11:02:31.156 [ MainTask] MainTask ์ค๋ ๋ ๋๊ธฐ ์๋ฃ 11:02:31.157 [ MainTask] End 11:02:31.663 [ main] MainTask ์ค๋ ๋ ์ํ: TERMINATED
- 0
- 2
- 135
Q&A
[12:42] ๊ตฌ๋ ์ค๋ช ๊ณผ pdf ์ค๋ช ์ด ๋ค๋ฅธ ๋ถ๋ถ์ ์ง๋ฌธ
๊ฐ์์๋ฃ ํด๋น ๋ถ๋ถ ์์ ์ค๋ช ์ "main ์ค๋ ๋๊ฐ 4์ด ๋ค์ work ์ค๋ ๋์ interrupt()๋ฅผ ๊ฑด๋ค." ๋ผ๋ ์ค๋ช ์ด ์์ผ๋ฏ๋ก, TIMED_WAITING ์ํ์ ์๋ ๊ฒ์ work ์ค๋ ๋๊ฐ ๋ง์ต๋๋ค.๋ ์ฌ์ํ์ง๋ง 2๋ฒ์์ "์ด๋ work ์ค๋ ๋๋ Thread.sleep(3000)์ผ๋ก ์ธํด TIMED_WAITING ์ํ์๋๋ฐ"๋ผ๊ณ ๋ง์ํด์ฃผ์ จ๋๋ฐ, while๋ฌธ์ ์กฐ๊ฑด์ ํ์ธํ๊ณ ์๊ฑฐ๋ log๋ฅผ ์ฐ๊ณ ์์ ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ดํ ๊ฑฐ์ ์ฆ์ Thread.sleep(3000)์ ํธ์ถํ์ฌ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ฏ๋ก ํฌ๊ฒ ์ฐจ์ด๋ ์๊ฒ ์ง๋ง์.๋๋จธ์ง๋ ๋ชจ๋ ์ ์ดํดํ์ ๊ฒ ๊ฐ์ต๋๋ค!
- 0
- 2
- 184
Q&A
hashCode๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ์๋ ๋ฐํํ๋๊ฒ ํ๋ ค์.
AI ๋ต๋ณ์ ์ถ๊ฐํ๋ฉด IntelliJ๋ฅผ ํตํด ๊ฐ ๋ฉ์๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.public final class Objects { public static int hashCode(Object o) { return o != null ? o.hashCode() : 0; } public static int hash(Object... values) { return Arrays.hashCode(values); } } public final class Arrays { public static int hashCode(Object[] a) { if (a == null) return 0; int result = 1; for (Object element : a) result = 31 * result + (element == null ? 0 : element.hashCode()); return result; } }๋ฐ๋ผ์ hashCode(id) + 31 = hash(id)๋ก ๋์ต๋๋ค.๋ํ IntelliJ์ ์๋์์ฑ ๊ธฐ๋ฅ์ AI ๋ต๋ณ๊ณผ ๊ฐ์ด ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ด๊ธฐ ๋๋ฌธ์ hashCode()๋ฅผ ์ถ์ฒํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
- 2
- 2
- 432
Q&A
์ ๋ค๋ฆญ ์ํ ์ค์ ์ ์ํด ์์ฑ์๋ฅผ ํ์ฉํ๋ ๊ฒ์ด extends๋ณด๋ค ๋ชปํ ์ ์ด ๋ฌด์์ธ๊ฐ์?
์๊ฐํ๋์ ๋์ ๋ต๋ณ์ ์ฒจ์ธํ๋ฉด, Box์์ T๋ ์๋ฌด ํด๋์ค๋ ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๊ฐ๋ฅํฉ๋๋ค.Cat cat = new Cat("๊ณ ์์ด", 100); Box foodBox = new Box(cat);์ด๋ Animal โ Food๋ก์ ๋ณํ์ ํ์ ๋งค๊ฐ๋ณ์ T๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์ปดํ์ผ๋ฌ๊ฐ ํ์ธํ์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.๊ทธ๋ฐ๋ฐ ๋ง์ฝ Box์public T getAnimal() { return animal; }์ ๊ฐ์ด getAniaml()์ด ์๋ค๋ฉด,Food food = foodBox.getAnimal();์์ Animal โ Food ๋ก ํ์ ์ ๋ฐ๊พธ๋ ค ์๋ํ๊ธฐ ๋๋ฌธ์ ClassCastException์ด ๋ฐ์ํฉ๋๋ค.๋ฐ๋ผ์ ํด๋์ค ๋ด ๋ชจ๋ T์ ์ ์ฝ์ ๊ฑธ๊ธฐ ์ํด ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
- 0
- 2
- 175
Q&A
๋ค์ด์บ์คํ
System.out.println(obj);๋ก ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ println() ๋ด๋ถ์ ์ผ๋ก Object ํด๋์ค์ toString() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ String ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
- 0
- 2
- 167




