# IJob

> An interface that allows you to schedule a single job that runs in parallel to other jobs and the main thread.

## Definition

* **Type:** Interface
* **Namespace:** [Unity.Jobs](/engine/6000.7/script-reference/unity/jobs.md)
* **Assembly:** UnityEngine.ManagedKernelModule

```csharp
[JobProducerType(typeof(IJobExtensions.JobStruct<>))]
public interface IJob
```

## Remarks

After a job is scheduled, the job's Execute method is invoked on a worker thread. You can use the returned [JobHandle](/engine/6000.7/script-reference/unity/jobs/jobhandle.md) to make sure that the job has completed. You can also pass the JobHandle to other jobs as a dependency, which ensures that jobs are executed one after another on the worker threads.

Additional Resources: [IJobForExtensions.ScheduleByRef](/engine/6000.7/script-reference/unity/jobs/ijobforextensions/schedulebyref.md)

## Examples

```csharp
{code Tests/EditModeAndPlayModeTests/Jobs/Assets/DocumentationExamples/ManagedJobDocExamples.cs#ijob-apidocs-example}
```

## Methods

| Method                                                                | Description                                               |
| --------------------------------------------------------------------- | --------------------------------------------------------- |
| [Execute](/engine/6000.7/script-reference/unity/jobs/ijob/execute.md) | Implement this method to perform work on a worker thread. |
