# Class AbstractThreadGroup

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

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

Direct Known Subclasses:
  `ThreadGroup`

public abstract class AbstractThreadGroup extends AbstractTestElement implements Serializable, Controller, JMeterThreadMonitor, TestCompilerHelper
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`
`MAIN_CONTROLLER`
`static final String`
`NUM_THREADS`
Number of threads in the thread group
`static final String`
`ON_SAMPLE_ERROR`
Action to be taken when a Sampler error occurs
`static final String`
`ON_SAMPLE_ERROR_CONTINUE`
Continue, i.e. ignore sampler errors
`static final String`
`ON_SAMPLE_ERROR_START_NEXT_LOOP`
Start next loop for current thread if sampler error occurs
`static final String`
`ON_SAMPLE_ERROR_STOPTEST`
Stop test (all threads) if sampler error occurs, the entire test is stopped at the end of any current samples
`static final String`
`ON_SAMPLE_ERROR_STOPTEST_NOW`
Stop test NOW (all threads) if sampler error occurs, the entire test is stopped abruptly.
`static final String`
`ON_SAMPLE_ERROR_STOPTHREAD`
Stop current thread if sampler error occurs

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`AbstractThreadGroup()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addIterationListener(LoopIterationListener lis)`
Controllers have to notify listeners of when they begin an iteration through their sub-elements.
`void`
`addTestElement(TestElement child)`
Add a test element.
`final boolean`
`addTestElementOnce(TestElement child)`
Add child test element only if it has not already been added.
`int`
`getNumberOfThreads()`
Get the number of active threads
`int`
`getNumThreads()`
Get the number of threads.
`boolean`
`getOnErrorStartNextLoop()`
Check if a sampler error should cause thread to start next loop.
`boolean`
`getOnErrorStopTest()`
Check if a sampler error should cause test to stop.
`boolean`
`getOnErrorStopTestNow()`
Check if a sampler error should cause test to stop now.
`boolean`
`getOnErrorStopThread()`
Check if a sampler error should cause thread to stop.
`Controller`
`getSamplerController()`
Get the sampler controller.
`void`
`initialize()`
Called to initialize a controller at the beginning of a test iteration.
`boolean`
`isDone()`
Indicates whether the Controller is done delivering Samplers for the rest of the test.
`Sampler`
`next()`
Delivers the next Sampler or null
`abstract int`
`numberOfActiveThreads()`
`void`
`removeIterationListener(LoopIterationListener iterationListener)`
Unregister IterationListener
`void`
`setNumThreads(int numThreads)`
Set the total number of threads to start
`void`
`setSamplerController(LoopController c)`
Set the sampler controller.
`abstract void`
`start(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine)`
`void`
`startNextLoop()`
Start next iteration after an error
`abstract void`
`stop()`
`abstract boolean`
`stopThread(String threadName, boolean now)`
`abstract void`
`tellThreadsToStop()`
`void`
`triggerEndOfLoop()`
NOOP
`abstract boolean`
`verifyThreadsStopped()`
`abstract void`
`waitThreadsStopped()`

### 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 JMeterThreadMonitor

`threadFinished`

### 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

### ON_SAMPLE_ERROR

public static final String ON_SAMPLE_ERROR
Action to be taken when a Sampler error occurs

See Also:
  - Constant Field Values

### ON_SAMPLE_ERROR_CONTINUE

public static final String ON_SAMPLE_ERROR_CONTINUE
Continue, i.e. ignore sampler errors

See Also:
  - Constant Field Values

### ON_SAMPLE_ERROR_START_NEXT_LOOP

public static final String ON_SAMPLE_ERROR_START_NEXT_LOOP
Start next loop for current thread if sampler error occurs

See Also:
  - Constant Field Values

### ON_SAMPLE_ERROR_STOPTHREAD

public static final String ON_SAMPLE_ERROR_STOPTHREAD
Stop current thread if sampler error occurs

See Also:
  - Constant Field Values

### ON_SAMPLE_ERROR_STOPTEST

public static final String ON_SAMPLE_ERROR_STOPTEST
Stop test (all threads) if sampler error occurs, the entire test is stopped at the end of any current samples

See Also:
  - Constant Field Values

### ON_SAMPLE_ERROR_STOPTEST_NOW

public static final String ON_SAMPLE_ERROR_STOPTEST_NOW
Stop test NOW (all threads) if sampler error occurs, the entire test is stopped abruptly. Any current samplers are interrupted if possible.

See Also:
  - Constant Field Values

### NUM_THREADS

public static final String NUM_THREADS
Number of threads in the thread group

See Also:
  - Constant Field Values

### MAIN_CONTROLLER

public static final String MAIN_CONTROLLER

See Also:
  - Constant Field Values

## Constructor Details

### AbstractThreadGroup

public AbstractThreadGroup()

## Method Details

### isDone

public boolean isDone()
Indicates whether the Controller is done delivering Samplers for the rest of the test. When the top-level controller returns true to JMeterThread, the thread is complete.

Specified by:
  `isDone` in interface `Controller`
Returns:
  boolean

### next

public Sampler next()
Delivers the next Sampler or null

Specified by:
  `next` in interface `Controller`
Returns:
  org.apache.jmeter.samplers.Sampler or null

### getSamplerController

public Controller getSamplerController()
Get the sampler controller.

Returns:
  the sampler controller.

### setSamplerController

public void setSamplerController(LoopController c)
Set the sampler controller.

Parameters:
  `c` - the sampler controller.

### addTestElement

public void addTestElement(TestElement child)
Add a test element.

Specified by:
  `addTestElement` in interface `TestElement`
Overrides:
  `addTestElement` in class `AbstractTestElement`
Parameters:
  `child` - the test element to add.

### addTestElementOnce

public final boolean addTestElementOnce(TestElement child)
Add child test element only if it has not already been added.

Only for use by TestCompiler.

Specified by:
  `addTestElementOnce` in interface `TestCompilerHelper`
Parameters:
  `child` - the `TestElement` to be added
Returns:
  `true` if the child was added

### addIterationListener

public void addIterationListener(LoopIterationListener lis)
Controllers have to notify listeners of when they begin an iteration through their sub-elements.

Specified by:
  `addIterationListener` in interface `Controller`
Parameters:
  `lis` - The `LoopIterationListener` to add

### removeIterationListener

public void removeIterationListener(LoopIterationListener iterationListener)
Unregister IterationListener

Specified by:
  `removeIterationListener` in interface `Controller`
Parameters:
  `iterationListener` - `LoopIterationListener`

### initialize

public void initialize()
Called to initialize a controller at the beginning of a test iteration.

Specified by:
  `initialize` in interface `Controller`

### startNextLoop

public void startNextLoop()
Start next iteration after an error

### triggerEndOfLoop

public void triggerEndOfLoop()
NOOP

Specified by:
  `triggerEndOfLoop` in interface `Controller`

### setNumThreads

public void setNumThreads(int numThreads)
Set the total number of threads to start

Parameters:
  `numThreads` - the number of threads.

### getNumberOfThreads

public int getNumberOfThreads()
Get the number of active threads

Returns:
  the number of active threads

### getNumThreads

public int getNumThreads()
Get the number of threads.

Returns:
  the number of threads.

### getOnErrorStartNextLoop

public boolean getOnErrorStartNextLoop()
Check if a sampler error should cause thread to start next loop.

Returns:
  true if thread should start next loop

### getOnErrorStopThread

public boolean getOnErrorStopThread()
Check if a sampler error should cause thread to stop.

Returns:
  true if thread should stop

### getOnErrorStopTest

public boolean getOnErrorStopTest()
Check if a sampler error should cause test to stop.

Returns:
  true if test (all threads) should stop

### getOnErrorStopTestNow

public boolean getOnErrorStopTestNow()
Check if a sampler error should cause test to stop now.

Returns:
  true if test (all threads) should stop immediately

### stopThread

public abstract boolean stopThread(String threadName, boolean now)

### numberOfActiveThreads

public abstract int numberOfActiveThreads()

### start

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

### verifyThreadsStopped

public abstract boolean verifyThreadsStopped()

### waitThreadsStopped

public abstract void waitThreadsStopped()

### tellThreadsToStop

public abstract void tellThreadsToStop()

### stop

public abstract void stop()