< prev index next >

src/share/vm/gc/shared/concurrentGCThread.hpp

Print this page
rev 10389 : imported patch webrev.01
rev 10390 : imported patch webrev.02
rev 10391 : [mq]: webrev.03
rev 10392 : imported patch webrev.04

*** 29,44 **** #include "utilities/macros.hpp" class ConcurrentGCThread: public NamedThread { friend class VMStructs; - 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(); --- 29,44 ---- #include "utilities/macros.hpp" class ConcurrentGCThread: public NamedThread { friend class VMStructs; bool volatile _should_terminate; bool _has_terminated; ! protected: ! // 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,75 ---- // 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(); + + bool should_terminate() { return _should_terminate; } + bool has_terminated() { return _has_terminated; } }; // 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 >