< prev index next >
src/share/vm/gc/shared/concurrentGCThread.hpp
Print this page
rev 10297 : [mq]: webrev.01
rev 10298 : [mq]: webrev.02
*** 33,44 ****
protected:
bool volatile _should_terminate;
bool _has_terminated;
! // Create and start the thread (setting it's priority high.)
! void create_and_start();
// Do initialization steps in the thread: record stack base and size,
// init thread local storage, set JNI handle block.
void initialize_in_thread();
--- 33,44 ----
protected:
bool volatile _should_terminate;
bool _has_terminated;
! // Create and start the thread (setting it's priority.)
! void create_and_start(ThreadPriority prio = NearMaxPriority);
// Do initialization steps in the thread: record stack base and size,
// init thread local storage, set JNI handle block.
void initialize_in_thread();
*** 47,61 ****
--- 47,72 ----
// Record that the current thread is terminating, and will do more
// concurrent work.
void terminate();
+ // Do the specific GC work. Called by run() after initialization complete.
+ virtual void run_service() = 0;
+
+ // Shut down the specific GC work. Called by stop() as part of termination protocol.
+ virtual void stop_service() = 0;
+
public:
ConcurrentGCThread();
// Tester
bool is_ConcurrentGC_thread() const { return true; }
+
+ virtual void run();
+
+ // shutdown following termination protocol
+ virtual void stop();
};
// The SurrogateLockerThread is used by concurrent GC threads for
// manipulating Java monitors, in particular, currently for
// manipulating the pending_list_lock. XXX
< prev index next >