JAVA
suspend(), resume(), stop()
suspend(), resume(), stop()
2022.07.07suspend(), resume(), stop() 쓰레드의 실행을 일시정지, 재개, 완전정지 시킨다. 쓰레드를 생성한다음, start()를 하면 실행 대기상태(줄서기)에 있다가 자기 순서때 실행을 하다가 작업을 다 못 마치면 뒤로가서 다시 줄을 서게 된다. 자기 작업이 끝나거나 stop()메서드를 호출하면 쓰레드가 종료된다. 그리고나서 쓰레드가 소멸되게 된다. 쓰레드는 작업을 마칠 때 까지 줄서기와 실행을 반복하는 것이다. 그러다가 작업이 끝나면 소멸되던가, stop()메서드를 호출하면 강제로 소멸되는 것이다. 실행중에 suspend() 일시정지라는 메서드를 호출하면, 쓰레드가 통안에 들어가서 WATING(일시정지)상태가 된다. resume()을 호출하면 일시 정지 상태에서 벗어나서 다시 나와서 줄을 서..
sleep(), iterrupt()
sleep(), iterrupt()
2022.07.01sleep() 현재 쓰레드를 지정된 시간동안 멈추게 한다. sleep() 메서드는 현재 쓰레드를 지정된 시간동안 멈추게 한다. sleep()은 static메서드라서 항상 현재 쓰레드에 대해서 동작한다. Thread 실행제어 메서드들 중에 static 메서드는 2개 있다고 했었다. 1. sleep() 2. yield() 양보 이 두 메서드는 static 메서드 이기 때문에 자기 자신에게만 동작한다. 예외처리를 해야한다. (InterruptedException이 발생하면 깨어남) sleep()은 예외를 발생시킬 수 있는 메서드라서 꼭 예외처리를 해줘야 한다. sleep 상태의 쓰레드가 잠자는 것을 멈추게 되는 것은 2가지 경우가 있다. 1. time-up (시간종료) 2. interrupted (누군가 깨우..
데몬 쓰레드, 쓰레드의 상태
데몬 쓰레드, 쓰레드의 상태
2022.06.29데몬 쓰레드 (demon thread) 일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행. 일반 쓰레드가 모두 종료되면 자동적으로 종료된다. 가비지 컬렉터(GC), 자동저장, 화면 자동갱신 등에 사용된다. 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. 데몬 쓰레드는, 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행한다. 쓰레드의 종류는 2가지 인데, 일반 쓰레드와 데몬 쓰레드가 있다. 데몬 쓰레드가 아닌 것을 일반 쓰레드라고 보면 된다. 데몬쓰레드는 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 것이기 때문에, 일반 쓰레드가 다 종료되고나면 데몬쓰레드가 보조역할을 해줄 쓰레드가 없는 것이다. 그래서 데몬..
쓰레드의 우선순위, 쓰레드 그룹
쓰레드의 우선순위, 쓰레드 그룹
2022.06.12쓰레드의 우선순위 (priority of thread) 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다. 자바에서는 쓰레드의 우선순위를 1~10까지 부여할 수 있도록 되어있다. 기본적으로는 보통 우선순위 5로 만들어져 있다. 그래서 우리가 쓰레드를 만들고, 우선순위를 지정해주지 않으면 우선순위가 5로 된다. 만약에 우선순위를 변경하고 싶으면, setPriority 를 이용해서 우선순위를 지정해줄 수 있다. 우선순위는 쓰레드가 시작된 이후에도 변경할 수 있다. 쓰레드의 우선순위를 알고싶다면, getPriority()라는 메서드를 호출하면 우선순위를 반환한다. 쓰레드 th1과 th2가 있을 때, 이 두 쓰레드의 우선순위가 같은 경우에는 비슷한 시간을 ..
싱글 쓰레드와 멀티 쓰레드, 쓰레드의 I/O 블락킹
싱글 쓰레드와 멀티 쓰레드, 쓰레드의 I/O 블락킹
2022.06.11main 쓰레드 main메서드의 코드를 구행하는 쓰레드 예를 들어서 이런 프로그램을 실행한다고 가정해보자. 그러면, java인터프리터가 Hello클래스에 있는 메인 메서드를 호출한다. 그러면 새로운 호출 스택이 만들어지고, 쓰레드가 이 main메서드에 있는 코드를 순서대로 쭉 실행한다. 이것이 main쓰레드다. main쓰레드는 사용자 쓰레드다. 쓰레드는 '사용자 쓰레드'와 '떼몬 쓰레드' 두 종류가 있다. 쓰레드에는 2가지 종류가 있는데, 사용자 쓰레드는 main 쓰레드이고, 데몬 쓰레드는 사용자 쓰레드가 하는 역할을 보조 해주는 역할을 하는 쓰레드이다. 프로그램은 사용자 쓰레드가 하나도 없을 때 종료된다. 지금까지는 main쓰레드가 하나밖에 없었기 때문에 main쓰레드가 종료되면 전체 프로그램이 종료되..
쓰레드의 구현과 실행
쓰레드의 구현과 실행
2022.05.30쓰레드의 구현과 실행 쓰레드를 구현하는 방법은 2가지가 있다. Thread클래스를 상속하는 방법과, Runnable 인터페이스를 구현하는 방법이 있다. 어떤방법을 사용해도 상관은 없으나, 아무래도 인터페이스를 구현하는 쪽이 더 낫다. 상속을 받게되면, 자바는 단일상속만 허용하기 때문에 Thread클래스를 상속받으면 다른 클래스를 상속받기 어렵다. 그래서 인터페이스를 구현하는 쪽이 더 낫다. 다른 클래스를 상속받을 수도 있기 때문이다. Runnable인터페이스는 이렇게 정의되어 있다. run() 메서드를 하나만 가지고 있는 인터페이스이고, 이 인터페이스를 구현한다는 것은, run()메서드를 완성해주면 된다. Thread클래스를 상속 받는 방법이나, Runnable 인터페이스를 구현하는 방법이나, 결국, r..