수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

Thread 죽였다 살리기.

후력

2023.04.01



wipi에서 쓰레드 프로그래밍중입니다.


딱히 오류가 있는 것은 아니고, 폰에서 실행되는 것이기 때문에
필요할때만 쓰레드를 움직이고 필요하지 않은경우엔 아예 죽이고 싶습니다.
오류사항에서 설명했던 것처럼,
보통은 쓰레드 처리할 때 runnable을 상속받은 클래스의 run() 메써드의 내부에
flag를 두어서 다른 클래스에서 이 클래스를 참조하여 flag를 바꿉니다.

사용하지 않는 경우에는 단순히 thread.sleep에서 무한루프를 돌며 대기하는 식으로 구현해왔습니다.

그런데 이렇게 되면 쓰레드가 죽는게 아니고 계속 무한루프를 돌며 일정 시간마다 리소스를 잡아먹기 때문에
아예 죽여버리고 다시 쓰고 싶습니다.

내부에 플래그를 두는 것은 똑같은데 만약 쓰레드를 멈췄을 시에 아예 run의 무한루프를 탈출하도록 했습니다.
외부에선 그 쓰레드가 죽을때까지 join으로 대기하구요.

그랬다가 다시 시작할때가 문제네요.

쓰레드 클래스의 start() 메써드를 다시 실행하니까 에러가 뜹니다.
오랜만에 쓰레드 프로그래밍 해보니 헷갈리네요. 쓰레드를 실행시키는 것이 단순히 run()만 호출하는게
아닐거란건 알고 있습니다. (그렇다면 그냥 run()을 실행하는것이 옳겠죠.)

어떤식으로 구현을 해야 완전히 쓰레드를 멈추고, 다시 그 쓰레드가 run()메써드를 실행하게 되는지
궁금합니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 찬솔큰

    어차피 해결책은 없어요..
    폰마다 특성이 있어서 되는것도 있고.. 않되는것도 있으니깐..
    폰별로 다른 방식으로 하시는게 좋을것 같네요..
    괜히 다 되는 방법 찾다가 시간 다 보냅니다.^^

  • 거늘

    wait/notify로 처리하시고 Thread pool을 가동(?)하시면 되지 않을까요? ㅎ

  • 일진누나

    아 wipi 프로그램이였구만요. ㅎㅎ
    전 데스크탑인줄 알았는데..

    sleep 이 해답이 아니라고 생각하신다면.
    어찌되었건 이벤트를 감시하기 위해서는 무조건.. 하나의 쓰레드(메인쓰레드 포함) 는 무한 루프 돌아야 하고요

    다른 액션 쓰레드들은 Object 객체에 들어있는 wait과 notify 방식을 이용하세요..
    wait 는 써본지 하도 오래되어서 기억이 가물가물 하지만 완전히 잠재워 버리는 겁니다.
    깨울려면 notify 를 이용해서 다시

  • 쇼콜라데

    찬님과 같은 방법으로 대체하려고 하고 있었는데, 쓰레드를 생성하는데 걸리는 오버헤드 역시 무시할 만한게 못되더라구요. 폰에 직접 올리니 역시 벼래별 문제가 다 있습니다..

  • 연파랑

    새로운 스레드 객체를 만들어서 start 하세요~

  • 개구리

    WIPI상에서는 조금 문제가 됩니다. sleep 길이를 늘리기엔 즉각적으로 반응해야 하는것이라 그러기에도 또 문제가 있네요 ^^

  • WatchOut

    보통은 멈추고 다시 실행 시키지 않습니다.
    sleep 이 더 좋은 방식입니다.

    만약 죽였다 다시 살리려면, 모든 로직부분을 완전이 다른 클래스로 분리해야죠. 유식한 말로 DI
    하지만 스레드는 가동될때 무겁습니다. 아무리 경량 프로세스라고 하지만요.

    한시간에 한번씩 기동된다면 모를까.

    그리고 지금 사용하시는 대부분의 윈도우 프로그램(이벤트 방식의 동작 제어 프로그램들)
    들도 마찬가지로 계속 무한 루프 돌면서 이벤트를 감시 하는 방식입니다.

  • 물보라

    쓰레드 객체를 아예 가비지 컬렉팅 해버리고 새로 할당하는 방법으로 했네요. 아직 폰에는 못올려봤지만 그럭저럭 괜찮은 것 같습니다.

번호 제 목 글쓴이 날짜
2697284 이미지를 흐리게 (2) 난새 2025-06-06
2697258 VC++ 6.0(studio)을 깔면서 재미가 붙었는데..ㅠㅠ (4) 앵겨쪼 2025-06-06
2697228 WorkFlow가 궁금합니다.. 다들 어떻게 하시는지.. (1) 애기 2025-06-06
2697174 button 태그와 input 태그의 type 속성을 사용한거와 차이 (1) 여름 2025-06-05
2697149 익스플로러에서 이미지로딩이 느려지는건지..깨져서 나옵니다. (4) 든솔 2025-06-05
2697122 호환성질문 (5) 미즈 2025-06-05
2697066 웹에서 다른이름으로 저장 할때 파일 이름 저장하는 방법은? 코이 2025-06-04
2697043 position:absolute; 로 하면 사라져 버리는 이유 ㅠㅠ (3) 풍란 2025-06-04
2697016 테이블 thead tbody 질문 아란 2025-06-04
2696989 contact us 페이지는 dl로 작성하는게 좋을까요? (4) 파라 2025-06-03
2696964 img 태그 질문드려요 (9) 연블루 2025-06-03
2696907 [질문] 올플래시 메뉴 고정할수 있는[수정] (4) 맨삶이 2025-06-03
2696875 책구입 후 따라하다가 ShortCode Ultimate 오류 가지등 2025-06-02
2696844 css 마우스 오버시 display:block되는 영역 질문드립니다 ㅠㅠ (2) 갅쥐누뉨 2025-06-02
2696816 엉엉엉...영상이 올라타네요 (5) 다은 2025-06-02
2696792 Doctype 문의 떠나간그녀 2025-06-02
2696683 컴파일된 클립 질문 드립니다. 흰추위 2025-06-01
2696656 C질문요 (4) 블랙캣 2025-05-31
2696504 플래시 위에 div 올리기 (5) 큰꽃늘 2025-05-30
2696458 제가 만든 소스 한번 봐주시고 수정 할 꺼 있으면 말해주세요. (실행은 되지만 깜빡거리네요) 이플 2025-05-29
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com