안녕하세요. chogahui05입니다. 생산자 소비자 문제를 구현할 때, 한 가지 의문이 들었습니다. 분명히 맞게 구현한 거 같은데 왜 제대로 동작을 하지 않을까? 이는 제가 쓰레드를 시작할 때, start 메서드를 불러야 하는데, run 메서드를 불렀었기 때문입니다. 그렇기 때문에 LOCK을 풀어야 하는데 풀리지도 않고. 계속 wait 상태에만 걸렸었습니다. notify가 들어가지도 않고. 3시간을 날린 것은 덤이였고요. 그런 걸 보면, 전 면접에도, 서류도 통과할 자격이 없는 건 분명해 보입니다. 이 둘이 어떤 차이가 있길래 그럴까요? Thread 클래스의 내부를 간단하게 보겠습니다. 여러 가지 쓰레드에 대한 정보들이 있는데요. 이 중, group이라는 것도 볼 필요가 있습니다. 713번째 줄에, T..
Thread 검색 결과
쓰레드를 이야기 하다 보면 병렬성과, 동시성이라는 용어가 자주 나옵니다. 이 말은 무엇을 의미할까요? 그 전에, 우리는 쓰레드의 상태를 이해할 필요가 있습니다. 오늘은 그에 대해서 간단하게 이야기 해 보도록 하겠습니다. 먼저, w[i] = new worker(); 문을 봅시다. 그러면, Thread를 상속받은 worker 객체가 생성이 됩니다. 그러면 worker-x는 생성이 되고, 아직 start()가 호출이 되지 않았어요. 이를 new 상태라고 이야기 합니다. 그 다음에 우리는 start() 메소드를 호출했습니다. t.start()를 호출하면, Thread를 상속받은 worker 클래스 내부의 run 메소드가 호출이 될 겁니다. 그러면, 실행 대기 상태가 됩니다. 즉, 스케쥴러에 의해서 선택이 될 수..
오늘은 Java에서 쓰레드를 생성하고 실행하는 방법에 대해서만 알아보도록 하겠습니다. Runnable을 매개값으로 하는 Thread 생성자를 호출하거나, 아니면 worker가 Thread를 상속하는 방법 2가지가 있는데요. 이 둘을 먼저 알아보도록 하겠습니다. 코드를 컴파일 하고 실행을 합니다. static void main(String args[]); 이 친구가 있는데요. 이 친구를 실행하고 종료하는 쓰레드를 메인 쓰레드라고 합니다. 그런데, worker를 하나 더 만들 수 있어요. 즉, Main 실행 흐름만 만드는 것이 아니라, 다른 역할을 하는 스레드 또한 만들 수 있는데요. 예를 들어서, Main에서 게임의 전체적인 알고리즘 같은 것을 수행한다면, Worker에서 배경 음악을 재생한다던지. 그런 ..
최근댓글