두 개의 동시 실행 스레드에 대한 쓰기 액세스 그래프를 그려야합니다. 스레드 자체에 간섭하지 않고 배열에 이러한 액세스의 타임 스탬프 값 쌍을 쓰는 가장 좋은 방법은 무엇입니까? 쓰여지는 대기열은 다음과 같습니다.Java에서 스레드 동작 분석
import java.util.concurrent.atomic.AtomicInteger;
class IQueue<T> {
AtomicInteger head = new AtomicInteger(0);
AtomicInteger tail = new AtomicInteger(0);
T[] items = (T[]) new Object[100];
public void enq(T x) {
int slot;
do {
slot = tail.get();
} while (! tail.compareAndSet(slot, slot+1));
items[slot] = x;
}
public T deq() throws EmptyException {
T value;
int slot;
do {
slot = head.get();
value = items[slot];
if (value == null)
throw new EmptyException();
} while (! head.compareAndSet(slot, slot+1));
return value;
}
public String toString() {
String s = "";
for (int i = head.get(); i < tail.get(); i++) {
s += items[i].toString() + "; ";
}
return s;
}
}
쓰레드가 시작되거나 쓰일 때마다 기록하고 싶습니다.
'LinkedBlockingQueue' /'ArrayBlockingQueue'를 사용하는 것이 잘못된 이유는 무엇입니까? – pjp
btrace는 사전 컴파일하여 에이전트의 프로그램 시작 부분에 부착 할 수 있습니다. – VonC
교육용입니다. – pypmannetjies