publicstaticvoid checkEq(long a, long b) { if (a != b) { thrownew Error("Expected: " + a + " got: " + b);
}
}
publicstaticvoid run() throws Exception {
ThreadHolder tc = new ThreadHolder(Thread.currentThread());
ThreadWaiter t1 = new ThreadWaiter(); long e1 = newJvmtiEnv(); long e2 = newJvmtiEnv();
// Everything should be 0
checkEq(0, tc.getTLS(e1));
checkEq(0, t1.getTLS(e1));
checkEq(0, tc.getTLS(e2));
checkEq(0, t1.getTLS(e2));
// Set in one pair.
tc.setTLS(e1, 1);
checkEq(1, tc.getTLS(e1));
checkEq(0, t1.getTLS(e1));
checkEq(0, tc.getTLS(e2));
checkEq(0, t1.getTLS(e2));
// Set in another pair.
t1.setTLS(e1, 2);
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(0, tc.getTLS(e2));
checkEq(0, t1.getTLS(e2));
// Set in third pair.
tc.setTLS(e2, 3);
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(3, tc.getTLS(e2));
checkEq(0, t1.getTLS(e2));
// Set in fourth pair.
t1.setTLS(e2, 4);
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(3, tc.getTLS(e2));
checkEq(4, t1.getTLS(e2));
// Create a new thread and make sure everything is 0.
ThreadWaiter t2 = new ThreadWaiter();
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(0, t2.getTLS(e1));
checkEq(3, tc.getTLS(e2));
checkEq(4, t1.getTLS(e2));
checkEq(0, t2.getTLS(e2));
// Create a new jvmtienv and make sure everything is 0. long e3 = newJvmtiEnv();
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(0, t2.getTLS(e1));
checkEq(3, tc.getTLS(e2));
checkEq(4, t1.getTLS(e2));
checkEq(0, t2.getTLS(e2));
checkEq(0, tc.getTLS(e3));
checkEq(0, t1.getTLS(e3));
checkEq(0, t2.getTLS(e3));
// Delete an env without data and make sure everything is still there.
destroyJvmtiEnv(e3);
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(0, t2.getTLS(e1));
checkEq(3, tc.getTLS(e2));
checkEq(4, t1.getTLS(e2));
checkEq(0, t2.getTLS(e2));
// Delete an env with data and make sure everything is still there.
destroyJvmtiEnv(e2);
checkEq(1, tc.getTLS(e1));
checkEq(2, t1.getTLS(e1));
checkEq(0, t2.getTLS(e1));
// Delete a thread. Make sure other thread still has data.
t1.cleanup();
checkEq(1, tc.getTLS(e1));
checkEq(0, t2.getTLS(e1));
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.