음 이런 내용에 대해 꼭 알아야해! 완전 중요해! 필수야! 이런건아니지만..
알아서 나쁠거없고 다 차곡 차곡 쌓이는 지식이기 때문에 ㅎㅎㅎㅎ !
정리를 해본다..
쓰레드 그룹은 말그대로 thread group이다 ㅋㅋ
서롸 관련된 쓰레드를 그룹으로 다루기 위한걸로 폴더를 생성해서 관련된 파일들을 함께 넣어서
관리하는 것처럼 쓰레드 그룹을 생성해서 쓰레드를 그룹으로 묶어서 관리할 수 있다.
폴더 안에 폴더를 넣는거마냥
쓰레드 그룹에 다른 쓰레드 그룹을 포함시킬수도 있는데
쓰레드 그룹은 보안상의 이유로 도입된 개념이라고 한다.(자세한건 더 찾아봐야할듯)
자신이 속한 쓰레드 그룹이나 하위 쓰레드 그룹은 변경할 수 있지만
다른 쓰레드 그룹의 쓰레드를 변경할수는 없는부분?!
자바에서 ThreadGroup을 사용해서 생성할 수 있고, 주요 생성자와 메서드를 제공한다.
쓰레드는 반드시 쓰레드 그룹에 포함되있어야하기때문에
쓰레드 그룹을 지정하는 생성자를 사용하지 않은 쓰레드는 기본적으로
자신을 생성한 쓰레드와 같은 그룹에 속한다.
자바 어플리케이션이 실행되면 JVM은 main과 system이라는 쓰레드 그룹을 만들고 JVM운영에 필요한 쓰레드를 생성!
그리고 그 쓰레드 그룹에 포함시킨다.
ex) main메서드를 수행하는 main이라는 이름의 쓰레드는 main쓰레드 그룹에 속하고,
가비지 컬렉션을 수행하는 Finalizer쓰레드는 system쓰레드 그룹에 속한다.
우리가 생성하는 모든 쓰레드 그룹은 main쓰레드 그룹의 하위 쓰레드 그룹이 되며,
쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 자동적으로 main쓰레드 그룹에 속하게된다.
음 내가 이걸 정리하면서 느끼는건 아.. 이런게 있구나 !_!
쓰레드그룹이라는게 있고 이렇게 사용하는구나..!
나중에 정리해야할 일이 있으면 그때 더 자세히..
<데몬스레드(daemon thread)와 일반 스레드(non-daemon thread)>
자바에서 스레드는 두가지 종류로 구분된다.
첫째는 데몬 스레드(daemon thread)인데 JVM이 스스로 필요에 의해 사용하는 스레드이다.
데몬쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역학을 하는 쓰레드라서
일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제적으로 자동 종료된다.
-->데몬 쓰레드는 일반 쓰레드의 보조역할을 수행하기때문에 일반스레드가 종료되고나면
데몬쓰레드의 존재의 의미가 없기 때문이다.
(JVM은 응용프로그램에서 생성한 일반 스레드가 하나라도 살아 있는 한 실행을 계속 한다.)
이 점을 제외하고는 일반쓰레드와는 다르지 않다.
ex))가비지컬렉터, 워드프로세서 자동저장, 화면 자동갱신 등이있다..
가비지 걸렉터가 대표적인 데몬스레드인데 응용프로그램에서 작성한 스레드를 데몬스레드로 표시해서
JVM이 데몬스레드로 인식하게 할 수도있다.
데몬 쓰레드는 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면
작업을 수행하고 다시 대기하도록 작성한다.
--
데몬쓰레드는 일반스레드의 작성방법과 실행방법이 같다.
다만
쓰레드를 생성한 다음 실행하기 전에 setDaemon(true)를 호출하기만 하면 된다.
(데몬스레드가 생성한 쓰레드는 자동적으로 데몬쓰레드가 된다! )
일반쓰레드 (non-daemon thread)는 응용프로그램에서 생성한 스레드이다.
main( )메소드도 대표적인 일반쓰레드다.