#include <coherence/lang/Thread.hpp>
Inherits Object, and Runnable.
| Public Types | |
| typedef spec::Handle | Handle | 
| Thread Handle definition. | |
| typedef spec::View | View | 
| Thread View definition. | |
| typedef spec::Holder | Holder | 
| Thread Holder definition. | |
| Public Member Functions | |
| virtual void | run () | 
| Invoke the Runnable. | |
| virtual int64_t | getId () const | 
| Return the Thread's unique ID. | |
| virtual State | getState () const | 
| Return the Thread's current state. | |
| virtual String::View | getName () const | 
| Return the Thread's name. | |
| virtual ThreadGroup::Handle | getThreadGroup () | 
| Return this thread's group, or NULL if the thread has terminated. | |
| virtual ThreadGroup::View | getThreadGroup () const | 
| Return this thread's group, or NULL if the thread has terminated. | |
| virtual bool | isAlive () const | 
| Tests if this thread is alive. | |
| virtual void | start () | 
| Begin executing the Thread's runnable on a new system thread. | |
| virtual void | interrupt () | 
| Request that the Thread stop executing. | |
| virtual bool | isInterrupted () const | 
| Return true iff the thread is interrupted. | |
| virtual void | join () const | 
| Wait for the Thread to reach the state_terminated state. | |
| virtual void | join (int64_t cMillis) const | 
| Wait for the Thread to reach the state_terminated state. | |
| virtual void | setName (String::View vsName) | 
| Set the Thread's name. | |
| virtual TypedHandle < const String > | toString () const | 
| Output a human-readable description of this Object to the given stream. Note that when overriding this method the return type must be TypedHandle<const String> rather then String::View. These two types are assignment compatible but not equivalent and declaring the override with String::View will not be a compatible override. coherence::lang::operator<<(std::ostream, Object::View) is defined and will call into the toString method, to output Objects. If a managed String object is desired, the COH_TO_STRING macro can be used to build up a String from streamable contents and is generally how toString() will be implemented. 
 Object::View vKey = ... Object::View vValue = ... std::cout << vKey << " = " << vValue << std::endl; String::View vs = COH_TO_STRING(vKey << " = " << vValue); The COH_TO_STRING macro is also the most common way to implement the toString method. For example: 
 virtual TypedHandle<const String> Person::toString() const { return COH_TO_STRING("Name: " << f_sName << " SSN: " << f_nSSN); } 
 
 | |
| Static Public Member Functions | |
| static Thread::Handle | currentThread () | 
| Return the Thread on which the caller is executing. | |
| static ObjectArray::Handle | getStackTrace (size32_t cTrim=0) | 
| Return a stack trace for this thread. | |
| static String::View | formatStackTrace (ObjectArray::View vaStack) | 
| Format a stack trace. | |
| static String::View | formatStacks (int64_t cMillisTimeout=-1) | 
| Return the stack trace of all known threads as a String. | |
| static bool | interrupted () | 
| Return true iff the caller's thread has been interrupted, or timed out. | |
| static void | sleep (int64_t cMillis) | 
| Pause the current thread for the specified duration. | |
| static void | yield () | 
| Temporarily pause the current thread. | |
| static int64_t | remainingTimeoutMillis () | 
| Return the number of milliseconds before the calling thread will timeout. | |
| static bool | isTimedOut () | 
| Return true if the calling thread is timed out. | |
| Protected Types | |
| enum | Maintenance | 
| Defines various thread maintenance tasks. | |
| Protected Member Functions | |
| virtual void | onExit () | 
| Called automatically on the thread prior to termination. | |
| virtual void | scheduleMaintenance (Maintenance nMaintenance) const | 
| Instruct the thread to perform maintenance. | |
| Static Protected Member Functions | |
| static void | doGlobalMaintenance (Maintenance nMaintenance) | 
| Instruct all threads to perform maintenance. | |
| Protected Attributes | |
| MemberHandle < ThreadGroup > | m_hGroup | 
| The thread's group. | |
| MemberHandle< Runnable > | m_hRunnable | 
| The inner runnable associated with this Thread. | |
| MemberView< String > | m_vsName | 
| The thread's name. | |
| FinalView< String > | f_vsDescription | 
| The thread's description. | |
| size32_t | m_cBytesStack | 
| The configured stack size;. | |
| Volatile< int32_t > | m_nState | 
| The current thread state. | |
| int | m_nMaintenanceMask | 
| Bit mask identifying required maintenance tasks. | |
| int64_t | m_lTimeout | 
| The thread's timeout value. | |
| virtual int64_t getId | ( | ) | const  [virtual] | 
Return the Thread's unique ID.
No two live thread's will have the same ID and no thread will have an id of 0.
| virtual State getState | ( | ) | const  [virtual] | 
Return the Thread's current state.
| virtual String::View getName | ( | ) | const  [virtual] | 
Return the Thread's name.
| virtual ThreadGroup::Handle getThreadGroup | ( | ) |  [virtual] | 
Return this thread's group, or NULL if the thread has terminated.
| virtual ThreadGroup::View getThreadGroup | ( | ) | const  [virtual] | 
Return this thread's group, or NULL if the thread has terminated.
| virtual bool isAlive | ( | ) | const  [virtual] | 
Tests if this thread is alive.
A thread is alive if it has been started and has not yet died.
true if this thread is alive; false otherwise. | virtual void start | ( | ) |  [virtual] | 
Begin executing the Thread's runnable on a new system thread.
This method may only be called once per Thread instance.
| IllegalStateException | if a called on a Thread which is not in the state state_initial. | 
| virtual bool isInterrupted | ( | ) | const  [virtual] | 
Return true iff the thread is interrupted.
Note, Unlike Thread::interrupted() this does not check if the thread has timed-out.
| virtual void join | ( | int64_t | cMillis | ) | const  [virtual] | 
Wait for the Thread to reach the state_terminated state.
| cMillis | the maximum duration to wait, or zero for infinite | 
| virtual void setName | ( | String::View | vsName | ) |  [virtual] | 
Set the Thread's name.
| vsName | the Thread's name | 
| virtual void onExit | ( | ) |  [protected, virtual] | 
| static Thread::Handle currentThread | ( | ) |  [static] | 
| static ObjectArray::Handle getStackTrace | ( | size32_t | cTrim = 0 | ) |  [static] | 
Return a stack trace for this thread.
| cTrim | the number of frames to trim from the top of the stack | 
| static String::View formatStackTrace | ( | ObjectArray::View | vaStack | ) |  [static] | 
Format a stack trace.
| vaStack | the array of StackTraceElements to output, or NULL for the stack of the current thread | 
| static String::View formatStacks | ( | int64_t | cMillisTimeout = -1 | ) |  [static] | 
Return the stack trace of all known threads as a String.
This is a blocking operation, while the calling thread waits for all known threads to report their stack.
| cMillisTimeout | the maximum amount of time to wait for all threads to report their stacks, or -1 for the system default of twice the interrupt resolution | 
| static bool interrupted | ( | ) |  [static] | 
Return true iff the caller's thread has been interrupted, or timed out.
The thread's interrupt state is reset as part of this operation.
| static void sleep | ( | int64_t | cMillis | ) |  [static] | 
Pause the current thread for the specified duration.
| cMillis | the duration to pause the thread for. | 
| InterruptedException | if the thread is interrupted while sleeping. | 
| static int64_t remainingTimeoutMillis | ( | ) |  [static] | 
Return the number of milliseconds before the calling thread will timeout.
Note if the current thread is timed out then invoking this method will also interrupt the thread.
| static bool isTimedOut | ( | ) |  [static] | 
Return true if the calling thread is timed out.
Note if the current thread is timed out then invoking this method will also interrupt the thread.
| virtual TypedHandle<const String> toString | ( | ) | const  [virtual] | 
Output a human-readable description of this Object to the given stream.
Note that when overriding this method the return type must be TypedHandle<const String> rather then String::View. These two types are assignment compatible but not equivalent and declaring the override with String::View will not be a compatible override.
coherence::lang::operator<<(std::ostream, Object::View) is defined and will call into the toString method, to output Objects. If a managed String object is desired, the COH_TO_STRING macro can be used to build up a String from streamable contents and is generally how toString() will be implemented.
Object::View vKey = ... Object::View vValue = ... std::cout << vKey << " = " << vValue << std::endl; String::View vs = COH_TO_STRING(vKey << " = " << vValue);
The COH_TO_STRING macro is also the most common way to implement the toString method. For example:
virtual TypedHandle<const String> Person::toString() const { return COH_TO_STRING("Name: " << f_sName << " SSN: " << f_nSSN); }
If the associated Runnable implements the coherence::util::Describable interface that content will be included as well.
Reimplemented from Object.
| int64_t m_lTimeout  [protected] | 
The thread's timeout value.
Value which are greater or equal to zero are used to indicate timeout timestamps. Negative values are relative timeouts which haven't yet been realized into a timestamp. This allows for an optimization where we can avoid obtaining the current time when "setting" the timeout, and defer it until we are about to block.