org.apache.jmeter.threads

## 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 and Description
    --- | ---
    `static String` | `DELAY` Scheduler start delay, overrides start time
    `static String` | `DELAYED_START` Whether thread startup is delayed until required
    `static String` | `DURATION` Scheduler duration, overrides end time
    `static String` | `RAMP_TIME` Ramp-up time
    `static String` | `SCHEDULER` Whether scheduler is being used

    - ### Fields inherited from class org.apache.jmeter.threads.AbstractThreadGroup

      `IS_SAME_USER_ON_NEXT_ITERATION, 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 org.apache.jmeter.testelement.TestElement

      `COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `JMeterThread` | `addNewThread(int delay, StandardJMeterEngine engine)` Add a new `JMeterThread` to this `ThreadGroup` for engine
    `long` | `getDelay()` Get the startup delay
    `long` | `getDuration()` Get the desired duration of the thread group test run
    `int` | `getRampUp()` Get the ramp-up value.
    `boolean` | `getScheduler()` Get whether scheduler is being used
    `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` | `setRampUp(int rampUp)` Set the ramp-up value.
    `void` | `setScheduler(boolean scheduler)` Set whether scheduler is being used
    `void` | `start(int groupNum, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine)` Start the `ThreadGroup`
    `void` | `stop()` This is a clean shutdown.
    `boolean` | `stopThread(String threadName, boolean now)` Stop thread called threadName: stop JMeter thread interrupt JMeter thread interrupt underlying thread
    `void` | `tellThreadsToStop()` This is an immediate stop interrupting: current running threads current running samplers For each thread, invoke: `JMeterThread.stop()` - set stop flag `JMeterThread.interrupt()` - interrupt sampler `Thread.interrupt()` - interrupt JVM thread
    `void` | `tellThreadsToStop(boolean now)`
    `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 org.apache.jmeter.threads.AbstractThreadGroup

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

    - ### Methods inherited from class org.apache.jmeter.testelement.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 java.lang.Object

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

    - ### Methods inherited from interface org.apache.jmeter.testelement.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, removed, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

- - ### Field Detail

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

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

    - #### ThreadGroup

          public ThreadGroup()

      No-arg constructor.

  - ### Method Detail

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

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

    - #### 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 groupNum,
                            ListenerNotifier notifier,
                            ListedHashTree threadGroupTree,
                            StandardJMeterEngine engine)

      Description copied from class: `AbstractThreadGroup`
      Start the `ThreadGroup`
      Specified by:
        `start` in class `AbstractThreadGroup`
      Parameters:
        `groupNum` - group number
        `notifier` - `ListenerNotifier`
        `threadGroupTree` - `ListedHashTree`
        `engine` - `StandardJMeterEngine`

    - #### addNewThread

          public JMeterThread addNewThread(int delay,
                                           StandardJMeterEngine engine)

      Description copied from class: `AbstractThreadGroup`
      Add a new `JMeterThread` to this `ThreadGroup` for engine
      Specified by:
        `addNewThread` in class `AbstractThreadGroup`
      Parameters:
        `delay` - Delay in milliseconds
        `engine` - `StandardJMeterEngine`
      Returns:
        `JMeterThread`

    - #### 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(boolean now)

    - #### tellThreadsToStop

          public void tellThreadsToStop()

      This is an immediate stop interrupting:
      - current running threads
      - current running samplers
      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()

      This is a clean shutdown. 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`

Copyright © 1998-2021 Apache Software Foundation. All Rights Reserved.