현재 안드로이드 계측 테스트에서 리트 조건이 발생했습니다. 내가 원하는 것은 :자바에서 스레드 시작을 기다리는 방법
- T1은 : 뭔가를 수행
- T1을 : 스레드 T2에게
- T2를 시작 안드로이드 라이브 사이클 이벤트 인 1 단계와 3으로 T2
에 가입하세요. 그러나 때문에 계측 테스트 모두가 매우 빠르게 일어나는 내가 얻을 :
- T1이 : 스레드 T2에게
- T1을 시작
- T2 (무 조작으로 판명) T2에 가입 : 무언가를
원하는 동작을 얻으려면 몇 가지 추가 할 수 있지만 확실히 할 수있는 방법이 있는지 궁금합니다. i.E. start()
-ed 스레드가 실제로 실제로 시작되었는지 확인하고 시작 대기중인 일부 예약 대기열에 아직 앉아 있지 않은지 확인하는 방법이 있습니까?
그리고 매트의 질문에 대답 (앤디 소년, 나는 에이다의 만남을 기반으로 멀티 태스킹을 그리워하지 않는다) :
if (this.thread != null && this.thread.isAlive())
{
this.stop.set (true);
try
{
this.thread.join (1000);
}
catch (final InterruptedException Exception)
{
android.util.Log.w (Actor.TAG, "Thread did not want to join.", Exception);
} // try
} // if
내가 말했듯이 : 어떤 조합을 스레드가 아직 시작되지 않았기 때문에 때.
'Thread.join()'은 매우 짧은 시간 제한을 설정하지 않는 한 조인 된 스레드가 죽을 때까지 대기합니다. 그 오류가 다른 것이 아니라고 확신합니까? – Mat
문제는 단위 테스트의 속도가 아닙니다. 스레드 스케줄링이 실행되는 방식입니다. – jefflunt
@Mat :이 질문에 답하기위한 코드 샘플을 추가했습니다. – Martin