# Schedule<T>(T, int, JobHandle)

> Schedules the job for execution on a worker thread.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Jobs](/engine/6000.5/script-reference/unity/jobs.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static JobHandle Schedule<T>(this T jobData, int arrayLength, JobHandle dependency) where T : struct, IJobFor
```

### Parameters

**** (T): The job and data to schedule.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): This job's Execute method will be called this many times, with its index argument ranging from 0 to (arrayLength - 1). Typically, this corresponds to the length of an array or array-like container passed in the job struct, but this is not necessarily the case.**** (\[JobHandle]\(/engine/6000.5/script-reference/unity/jobs/jobhandle)): The [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) of the job's dependency. You can use dependencies to make sure that a job executes on worker threads after the dependency has completed execution and two jobs that read or write to same data don't run in parallel.

### Returns

| Type                                                                 | Description                                                                                                                                                                                                           |
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) | The [JobHandle](/engine/6000.5/script-reference/unity/jobs/jobhandle.md) of the scheduled job. You can use the `JobHandle` as a dependency for a later job or to make sure that the job completes on the main thread. |

### Remarks

For large job structs, use [IJobForExtensions.ScheduleByRef](/engine/6000.5/script-reference/unity/jobs/ijobforextensions/schedulebyref.md) to avoid any large pass-by-values.

This variant processes all loop elements in a single worker thread. To distribute the work across multiple worker threads, use [IJobForExtensions.ScheduleParallelByRef](/engine/6000.5/script-reference/unity/jobs/ijobforextensions/scheduleparallelbyref.md).

Additional Resources: [IJobFor](/engine/6000.5/script-reference/unity/jobs/ijobfor.md).
