기본적으로 셀 (공유 메모리)과 자동차 (관찰 가능한 스레드) 행렬을 가진 프로그램이 있습니다. 각 이동 전에 각 차는 다음 셀에 대한 액세스를 요청하고 다음 호출이 차단되면 wait()을 호출하는 동기화 된 블록에 들어가고 스레드는 잠자기 상태가됩니다. 나는 그것이 기다리고있는 동안 차를 무언가를 할 수있는 어떤 방법이 있는지 궁금 해서요. 그리고 그가 알리기 시작하면 기다리기 전에 계속하고있는 일을 계속할 수 있습니다.기다리는 동안 무언가를하는 멀티 스레딩
답변
당신은 재 설계해야합니다 : 자동차로 실을 모델링하지 마십시오. 스레드 풀이 필요한 모든 작업을 수행하도록하고 콜백 함수가있는 비동기 모델이 자동차의 동작을 안내하도록하십시오. 셀이 막히면 자동차 상태가 변경되지 않고 스레드 풀이 다른 작업을 수행 할 수 있습니다. 셀이 해제되면 적절한 콜백을 시작하여 업데이트 작업을 풀에 제출합니다.
2 웨이 스레드 통신을 위해 Handler
을 사용하여 사용자가 설명한 것과 비슷한 작업을 수행했습니다.
아이/노동자/'자동차'스레드는 작업을 수행 일정 기간 (~ 100ms의)에 대한 절전 모드로 전환하고, 검사 상태 변경에 대한 스레드 클래스의 멤버 변수를 깨어 때.
부모 스레드는 작업자 스레드에
Handler
메시지를 보내고 작업자 스레드는 명령을 받고 작업자 스레드 클래스의 구성원 변수를 설정하고 다음에 작업자가 잠자기 모드에서 나가는 것을 감지합니다. (루퍼없이) 핸들러의 좋은 개요 -스레드 :
다음은 내가
Handler
의를 사용하고 효과적으로 스레드간에 통신하는 방법을 파악하기 위해 검토했던 링크입니다. w/코드 예제 :com.indy.testing.TestMain.java.MyThread.java
http://indyvision.net/2010/02/android-threads-tutorial-part-3/스레드 - 확인 핸들러의 개요 및 루퍼/2WAY의 통신 w http://techtej.blogspot.com/2011/02/android-passing-data-between-main.html
스레드./코드 예제 w : sample.thread.messaging.ThreadMessaging.java http://codinghard.wordpress.com/2009/05/16/android-thread-messaging/
감사합니다. – Nmas
- 1. 런타임 동안 멀티 스레딩 비활성화
- 2. COM 멀티 스레딩 지원
- 3. 멀티 스레딩 및 멀티 태스킹
- 4. 멀티 스레딩
- 5. dotNet의 잠금 및 멀티 스레딩
- 6. heroku의 멀티 스레딩 루비 작업자
- 7. LINQ Changeset 멀티 스레딩
- 8. iPhone "멀티 스레딩"질문
- 9. 멀티 스레딩 멀티 볼 게임
- 10. iPhone : 멀티 태스킹, 멀티 스레딩?
- 11. 기본 멀티 스레딩 질문
- 12. GWT : 멀티 스레딩
- 13. 멀티 스레딩 및 LWUIT
- 14. C의 멀티 스레딩
- 15. VB.Net에서 멀티 스레딩 사용
- 16. 자바 멀티 스레딩 동기화
- 17. IIS 멀티 스레딩
- 18. 멀티 스레딩 프로그램에서 출력
- 19. 멀티 스레딩 성능 문제
- 20. ASP.NET 멀티 스레딩
- 21. Objective-C에서 멀티 스레딩
- 22. 워크 플로에서 멀티 스레딩 구현
- 23. 멀티 스레딩 CSLA.NET
- 24. Blackberry 멀티 스레딩 문제
- 25. 멀티 스레딩 세션 객체
- 26. 멀티 스레딩 문제
- 27. 파이썬 멀티 스레딩 동기화
- 28. 다른 스크립트를 멀티 스레딩
- 29. Bash의 멀티 스레딩
- 30. 부스트 멀티 스레딩
, 감사 – Nmas
내가 그 살펴본하지만 난 할 수있을 거라 생각하지 않습니다 주로 모든 자동차가 동시에 인스턴스화되지 않기 때문에 자동차 클래스의 스레드 대신 스레드 풀을 사용합니다. 나는 모든 차가 "주차 된"곳에 목록이 들어있는 여러 차고를 가지고 있는데, 이것은 각 차고에서 새로운 나사 (자동차) .start()를 수행한다는 것을 의미합니다. 예를 들어 각 차고마다 2 개의 새 차를 시작합니다. 목적지는 다른 차고입니다. – Nmas
내 제안은 스레드 풀로 스레드를 대체하는 것보다 훨씬 더 깊게 실행됩니다. 모델링 된 엔티티 (자동차)를 스레드에 단단히 묶는 디자인은 근본적으로 결함이 있으며, 생산 가치가있는 시스템은 그렇게 설계 될 수 없습니다. 사실, 당신은 아마도 스레딩, 메인 이벤트 디스 패칭 루프를 실행하는 하나의 스레드, 이벤트 핸들러의 모든 코드와 같은 것을 필요로 할 것입니다. –