2011-05-09 2 views
0

내 P4 시스템에서 두 개의 스레드가 동시에 실행되기 시작했는지 어떻게 알 수 있습니까?() 메소드Java의 멀티 스레딩

static Hashtable<Long, Date> starttimes = ...; 

각 스레드의 실행에 :

starttimes.put(Thread.currentThread().getId(), new Date()); //or use thread names if they are unique 

동기화 맵 또는 (이미 동기화) 해시 테이블의 시작 시간을 저장 예를 들어, 당신은 할 수

+6

펜티엄 4에는 단일 코어가 있으므로 두 스레드가 동시에 실행을 시작할 수 없습니다 시각. 아마도 좀 더 자세한 내용일까요? – trojanfoe

+0

이것을 시도하십시오, http://stackoverflow.com/questions/861346/in-java-how-do-you-determine-if-a-thread-is-running – cloverink

+0

"시작한"및 "at"의 정의에 따라 다릅니다. 동시". 귀하의 질문은 너무 모호합니다. 좀 더 자세하게 말하십시오. – user658991

답변

0

, 그런 다음 날짜를 반복하고 비교할 수 있습니다.

0

일부 시스템에서는 JVM간에 System.nanoTime()이 상당히 일치한다고 가정 할 수 있습니다. 이것은 보장 된 것은 아니지만 그것이 사실 인 것으로 판명되었습니다.

그러나 동시에 시작하는 두 개의 스레드는 매우 드문 경우이므로이 상황이 발생하지 않을 것이라고 매우 안전하게 가정 할 수 있습니다. System.nanoTime()에 대한 두 번의 호출조차도 100 나노초 또는 그 이상의 나노 초가 될 수 있습니다. 다른 스레드에서 두 번 호출하면 동일한 값을 반환하지 않을 수 있습니다. 심지어 그들이했다면, 을 동시에 시작할 것이라고 보장 할 수 없습니다. 그들이 한 첫 번째 작업 만이 동시에 발생했습니다 (System.nanoTime()의 정확도 내)