소스를 살펴보고있는데
코드를 이해못하는부분이 있어서 질문드립니다
public static class SchedulableEvent {
private long mTimestamp;
private SchedulableEvent mNext = null;
public SchedulableEvent(long timestamp) {
mTimestamp = timestamp;
}
public long getTimestamp() {
return mTimestamp;
}
public void setTimestamp(long timestamp) {
mTimestamp = timestamp;
}
}
private class FastEventQueue {
// One thread takes from the beginning of the list.
volatile SchedulableEvent mFirst;
// A second thread returns events to the end of the list.
volatile SchedulableEvent mLast;
volatile long mEventsAdded;
volatile long mEventsRemoved;
FastEventQueue(SchedulableEvent event) {
mFirst = event;
mLast = mFirst;
mEventsAdded = 1; // Always created with one event added. Never empty.
mEventsRemoved = 0; // None removed yet.
}
int size() {
return (int)(mEventsAdded - mEventsRemoved);
}
public SchedulableEvent remove() {
// Take first event.
mEventsRemoved++;
SchedulableEvent event = mFirst;
mFirst = event.mNext;
return event;
}
public void add(SchedulableEvent event) {
event.mNext = null;
mLast.mNext = event;
mLast = event;
mEventsAdded++;
}
}
위의코드 add 메소드부분에서
mLast.mNext = event;
mLast = event;
이렇게 mLast 에 event 를 넣으면
event 를 넣기전의 mLast 에 들어있는 값은 어떻게되나요?
제가이해하기로는
add 메소드를 호출하면 mLast 에는 계속해서 인자로주어진 새로운 값이들어가고
이전의 mLast 에 들어있는값들에 접근할수있는방법이 없어질것같은데
잘못이해한건가요?