해결된 질문
작성
·
83
0
해당 강의 10분 경 나온 설명으로, setName 메소드 자체가 스레드 이름에 영향을 주나? 싶은 궁금증이 들어서 확인해 보았고, 저와 비슷한 궁금증을 가지신 분들이 계실 것 같아 공유드립니다.
setName은 Thread name 생성 로직에는 관여하지 않습니다. 다만, 해당 예제에서는 new Thread()로 이름 없는 스레드를 생성 후(이 때 Thread-0으로 생성), 해당 Thread를 setName을 통해 Thread name을 바꿔주고 있어서, setName을 사용하면 1부터 카운트되는 것 처럼 보였던 것입니다.
-> 새로 생성된 스레드의 이름은 Thread-0
-> Thread-0이 yourThread로 치환됨
yourThread를 생성하는 부분에서 Thread의 이름을 임의로 넣어주고, 아래에서 스레드를 생성하면 0번부터 생성됨을 확인할 수 있습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
해당 질문을 통해 스레드 이름 설정과 관련된 궁금증을 가지고 계신 것으로 보입니다. 자바에서 스레드 이름을 설정하는 것은 Thread
객체의 setName
메소드를 통해 이루어집니다. 기본적으로 new Thread()
로 생성된 스레드는 “Thread-0”과 같은 이름을 갖게 되는데, 이는 JVM이 각 스레드에 순차적으로 부여하는 이름입니다. 따라서 첫 번째 직접 생성한 스레드가 “Thread-0”이 됩니다.
setName
메소드는 스레드에 이미 지정된 이름을 변경할 때 사용되며, 스레드 생성 시 이름을 지정하지 않으면 JVM이 자동으로 이름을 지정합니다. 이름을 수동으로 설정하고 싶은 경우, 스레드 생성 시 또는 생성 후 setName
메소드를 통해 할 수 있습니다. 이름 설정 로직에 직접 관여하지는 않지만, 사용자가 원하는 이름을 스레드에 할당할 수 있게 해주는 유용한 방법입니다.
공유해주신 이미지와 설명에 따르면, yourThread
를 생성하고 이름을 설정한 이후에는, 이후 생성되는 스레드들은 순차적으로 “Thread-1”, “Thread-2” 등의 이름을 갖게 됩니다. 이는 setName
메소드가 스레드에 이름을 설정하는 방식과 JVM이 이름을 자동으로 할당하는 방식이 상호 보완적으로 작동하기 때문입니다.
공유해준 이미지들을 통해, 스레드 생성 및 이름 설정의 기본적인 이해를 돕는 좋은 예시를 제공하셨습니다. 각 스레드의 이름을 설정하고, 그 이름을 확인하며 멀티스레딩 프로그램을 더 효율적으로 관리할 수 있습니다.
이미지를 통해 제공된 정보 외에도, 실제 프로그래밍 과정에서는 고유한 스레드 이름을 지정함으로써 디버깅과 로깅을 용이하게 만들 수 있습니다. 스레드 이름을 명시적으로 관리하는 것은 멀티스레드 환경에서 프로그램의 가독성과 유지보수성을 향상시키는 좋은 방법입니다.