< prev index next >
src/share/vm/gc/shared/concurrentGCThread.cpp
Print this page
rev 10297 : [mq]: webrev.01
@@ -73,10 +73,36 @@
_has_terminated = true;
Terminator_lock->notify();
}
}
+void ConcurrentGCThread::run() {
+ initialize_in_thread();
+ wait_for_universe_init();
+
+ run_service();
+
+ terminate();
+}
+
+void ConcurrentGCThread::stop() {
+ // it is ok to take late safepoints here, if needed
+ {
+ MutexLockerEx mu(Terminator_lock);
+ _should_terminate = true;
+ }
+
+ stop_service();
+
+ {
+ MutexLockerEx mu(Terminator_lock);
+ while (!_has_terminated) {
+ Terminator_lock->wait();
+ }
+ }
+}
+
static void _sltLoop(JavaThread* thread, TRAPS) {
SurrogateLockerThread* slt = (SurrogateLockerThread*)thread;
slt->loop();
}
< prev index next >