# Class ThreadGroup

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.threads.AbstractThreadGroup
org.apache.jmeter.threads.ThreadGroup

All Implemented Interfaces:
  `Serializable, Cloneable, Controller, Searchable, TestElement, JMeterThreadMonitor, TestCompilerHelper`

Direct Known Subclasses:
  `PostThreadGroup, SetupThreadGroup`

public class ThreadGroup extends AbstractThreadGroup
ThreadGroup holds the settings for a JMeter thread group. This class is intended to be ThreadSafe.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`DELAY`
Scheduler start delay, overrides start time
`static final String`
`DELAYED_START`
Whether thread startup is delayed until required
`static final String`
`DURATION`
Scheduler duration, overrides end time
`static final String`
`END_TIME`
Scheduler absolute end time
`static final String`
`RAMP_TIME`
Ramp-up time
`static final String`
`SCHEDULER`
Whether scheduler is being used
`static final String`
`START_TIME`
Scheduler absolute start time

### Fields inherited from class AbstractThreadGroup

`MAIN_CONTROLLER, NUM_THREADS, ON_SAMPLE_ERROR, ON_SAMPLE_ERROR_CONTINUE, ON_SAMPLE_ERROR_START_NEXT_LOOP, ON_SAMPLE_ERROR_STOPTEST, ON_SAMPLE_ERROR_STOPTEST_NOW, ON_SAMPLE_ERROR_STOPTHREAD`

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`ThreadGroup()`
No-arg constructor.

## Method Summary

Modifier and Type
Method
Description
`long`
`getDelay()`
Get the startup delay
`long`
`getDuration()`
Get the desired duration of the thread group test run
`long`
`getEndTime()`
Get the end time value.
`int`
`getRampUp()`
Get the ramp-up value.
`boolean`
`getScheduler()`
Get whether scheduler is being used
`long`
`getStartTime()`
Get the absolute start time value.
`int`
`numberOfActiveThreads()`
`void`
`setDelay(long delay)`
Set the startup delay
`void`
`setDuration(long duration)`
Set the desired duration of the thread group test run
`void`
`setEndTime(long etime)`
Set the EndTime value.
`void`
`setRampUp(int rampUp)`
Set the ramp-up value.
`void`
`setScheduler(boolean Scheduler)`
Set whether scheduler is being used
`void`
`setStartTime(long stime)`
Set the absolute StartTime value.
`void`
`start(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine)`
`void`
`stop()`
For each thread, invoke: `JMeterThread.stop()` - set stop flag
`boolean`
`stopThread(String threadName, boolean now)`
Stop thread called threadName: stop JMeter thread interrupt JMeter thread interrupt underlying thread
`void`
`tellThreadsToStop()`
For each thread, invoke: `JMeterThread.stop()` - set stop flag `JMeterThread.interrupt()` - interrupt sampler `Thread.interrupt()` - interrupt JVM thread
`void`
`threadFinished(JMeterThread thread)`
Called by JMeterThread when it finishes
`boolean`
`verifyThreadsStopped()`
`void`
`waitThreadsStopped()`
Wait for all Group Threads to stop

### Methods inherited from class AbstractThreadGroup

`addIterationListener, addTestElement, addTestElementOnce, getNumberOfThreads, getNumThreads, getOnErrorStartNextLoop, getOnErrorStopTest, getOnErrorStopTestNow, getOnErrorStopThread, getSamplerController, initialize, isDone, next, removeIterationListener, setNumThreads, setSamplerController, startNextLoop, triggerEndOfLoop`

### Methods inherited from class AbstractTestElement

`addPropertiesValues, addProperty, addProperty, canRemove, clear, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

### Methods inherited from class Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface TestElement

`canRemove, clear, clearTestElementChildren, clone, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

## Field Details

### RAMP_TIME

public static final String RAMP_TIME
Ramp-up time

See Also:
  - Constant Field Values

### DELAYED_START

public static final String DELAYED_START
Whether thread startup is delayed until required

See Also:
  - Constant Field Values

### SCHEDULER

public static final String SCHEDULER
Whether scheduler is being used

See Also:
  - Constant Field Values

### START_TIME

public static final String START_TIME
Scheduler absolute start time

See Also:
  - Constant Field Values

### END_TIME

public static final String END_TIME
Scheduler absolute end time

See Also:
  - Constant Field Values

### DURATION

public static final String DURATION
Scheduler duration, overrides end time

See Also:
  - Constant Field Values

### DELAY

public static final String DELAY
Scheduler start delay, overrides start time

See Also:
  - Constant Field Values

## Constructor Details

### ThreadGroup

public ThreadGroup()
No-arg constructor.

## Method Details

### setScheduler

public void setScheduler(boolean Scheduler)
Set whether scheduler is being used

Parameters:
  `Scheduler` - true is scheduler is to be used

### getScheduler

public boolean getScheduler()
Get whether scheduler is being used

Returns:
  true if scheduler is being used

### setStartTime

public void setStartTime(long stime)
Set the absolute StartTime value.

Parameters:
  `stime` - - the StartTime value.

### getStartTime

public long getStartTime()
Get the absolute start time value.

Returns:
  the start time value.

### getDuration

public long getDuration()
Get the desired duration of the thread group test run

Returns:
  the duration (in secs)

### setDuration

public void setDuration(long duration)
Set the desired duration of the thread group test run

Parameters:
  `duration` - in seconds

### getDelay

public long getDelay()
Get the startup delay

Returns:
  the delay (in secs)

### setDelay

public void setDelay(long delay)
Set the startup delay

Parameters:
  `delay` - in seconds

### setEndTime

public void setEndTime(long etime)
Set the EndTime value.

Parameters:
  `etime` - - the EndTime value.

### getEndTime

public long getEndTime()
Get the end time value.

Returns:
  the end time value.

### setRampUp

public void setRampUp(int rampUp)
Set the ramp-up value.

Parameters:
  `rampUp` - the ramp-up value.

### getRampUp

public int getRampUp()
Get the ramp-up value.

Returns:
  the ramp-up value.

### start

public void start(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine)

Specified by:
  `start` in class `AbstractThreadGroup`

### stopThread

public boolean stopThread(String threadName, boolean now)
Stop thread called threadName:

1. stop JMeter thread
2. interrupt JMeter thread
3. interrupt underlying thread

Specified by:
  `stopThread` in class `AbstractThreadGroup`
Parameters:
  `threadName` - String thread name
  `now` - boolean for stop
Returns:
  true if thread stopped

### threadFinished

public void threadFinished(JMeterThread thread)
Called by JMeterThread when it finishes

### tellThreadsToStop

public void tellThreadsToStop()
For each thread, invoke:

- `JMeterThread.stop()` - set stop flag
- `JMeterThread.interrupt()` - interrupt sampler
- `Thread.interrupt()` - interrupt JVM thread

Specified by:
  `tellThreadsToStop` in class `AbstractThreadGroup`

### stop

public void stop()
For each thread, invoke:

- `JMeterThread.stop()` - set stop flag

Specified by:
  `stop` in class `AbstractThreadGroup`

### numberOfActiveThreads

public int numberOfActiveThreads()

Specified by:
  `numberOfActiveThreads` in class `AbstractThreadGroup`
Returns:
  number of active threads

### verifyThreadsStopped

public boolean verifyThreadsStopped()

Specified by:
  `verifyThreadsStopped` in class `AbstractThreadGroup`
Returns:
  boolean true if all threads stopped

### waitThreadsStopped

public void waitThreadsStopped()
Wait for all Group Threads to stop

Specified by:
  `waitThreadsStopped` in class `AbstractThreadGroup`