본문 바로가기
내가 보려고 정리한 JAVA

[자바] 스레드

by nacastle 2020. 6. 10.

ㅈㄱㅁ이 말해준게 맞네...4개의 스레드를 번갈아 시행되도록 설정해주지 않으면, 3개만 집중적으로 시행될 경우 나머지 한개 스레드만 남아서 wait상태에서 깨어나지 않을 경우가 생기네...

 

-1번만 남아서 Run이 안 끝나는 case

1번 콜센터 : 10000원을 받았습니다.
2번 콜센터 : 2000원을 받았습니다.
3번 콜센터 : 9000원을 받았습니다.
4번 콜센터 : 2000원을 받았습니다.
3번 콜센터 : 5000원을 받았습니다.
2번 콜센터 : 4000원을 받았습니다.
3번 콜센터 : 5000원을 받았습니다.
4번 콜센터 : 4000원을 받았습니다.
2번 콜센터 : 3000원을 받았습니다.
3번 콜센터 : 2000원을 받았습니다.
4번 콜센터 : 6000원을 받았습니다.
2번 콜센터 : 9000원을 받았습니다.
3번 콜센터 : 7000원을 받았습니다.
4번 콜센터 : 1000원을 받았습니다.
2번 콜센터 : 8000원을 받았습니다.
3번 콜센터 : 3000원을 받았습니다.
4번 콜센터 : 9000원을 받았습니다.
2번 콜센터 : 4000원을 받았습니다.
3번 콜센터 : 6000원을 받았습니다.
4번 콜센터 : 10000원을 받았습니다.
2번 콜센터 : 1000원을 받았습니다.
3번 콜센터 : 9000원을 받았습니다.
4번 콜센터 : 7000원을 받았습니다.
2번 콜센터 : 10000원을 받았습니다.
3번 콜센터 : 4000원을 받았습니다.
4번 콜센터 : 8000원을 받았습니다.
2번 콜센터 : 8000원을 받았습니다.
3번 콜센터 : 8000원을 받았습니다.
4번 콜센터 : 9000원을 받았습니다.
2번 콜센터 : 7000원을 받았습니다.
4번 콜센터 : 4000원을 받았습니다.
3번 콜센터 총 모금액: 145000원
4번 콜센터 총 모금액: 159000원
2번 콜센터 총 모금액: 157000원
1번 콜센터 : 6000원을 받았습니다.

 

->계속 run 상태

 

 

 

 

https://www.youtube.com/watch?v=hao05jNL2m8

https://ict-nroo.tistory.com/41

 

***** 주의사항

* 일시 정지 상태에 그 스레드가 존재하면 스레드가 종료되지 않는다.

* 자식스레드 vs부모스레드(메인) 하면 무조건 부모꺼 다 돌리고 자식꺼를 실행하기 시작한다.

 

-Join: 다른 스레드의 종료를 기다림 (기다릴때까지 그 스레드는 일시정지 상태)

 

-synchronized를 이용한 동기화

자바에서는 키워드 synchronized를 통해 해당 작업과 관련된 공유 데이터에 lock을 걸어서 먼저 작업 중이던 쓰레드가 작업을 완전히 마칠 때까지는 다른 쓰레드에게 제어권이 넘어가더라도 데이터가 변경되지 않도록 보호함으로써 쓰레드의 동기화를 가능하게 한다.


출처: https://devbox.tistory.com/entry/Java-쓰레드의-동기화 [장인개발자를 꿈꾸는 :: 기록하는 공간]

 

 

-priority

주석에 달아놓았듯이 괄호안에 1부터 10까지 원하는 우선순위값을 setPriority( ) 메소드에 넘겨주면 값이 높은 쓰레드부터 더 큰 비중을 두고 먼저 처리한다. 

 

-notify, wait, notifyAll 메소드

경우에 따라 두 스레드가 교대로 번갈아가며 실행해야 할 경우가 있다. (정확한 교대작업이 필요한 경우, 한 스레드가 작업이 끝나며 상대방 스레드의 일시정지를 풀어주고 자신은 일시정지로 만들어야 한다.)

공유객체 를 사용하여 두 스레드가 작업할 내용을 각각 동기화 메소드로 구분해 놓은 후 한 스레드가 작업이 완료되면 notify()메서드를 호출한다.

notify() => 일시 정지 상태에 있는 다른 스레드를 실행 대기 상태로 만듬

wait() => 스레드를 일시 정지 상태로 만듬

notifyAll() => wait()에 의해 일시정지된 모든 스레드를 실행 대기 상태로 만듬

 

-yield() 메소드

실행 중에 우선순위가 동일한 다른 스레드에게 실행을 양봐고 실행 대기 상태가 됨

 

 

 

반응형

'내가 보려고 정리한 JAVA' 카테고리의 다른 글

[자바] 데드락  (0) 2020.06.13
[자바] UDP, TCP  (1) 2020.06.11
[자바] 시험대비  (0) 2020.05.22
[자바 객체 문법] this 키워드  (0) 2020.04.18
[자바 객체 문법] 생성자 (Constructor)  (0) 2020.04.18