1# Thread Model (Stage Model) 2 3## Thread Type 4There are three types of threads in the stage model: 5- Main thread 6 - Draws the UI. 7 - Manages the [ArkTS engine](../arkts-utils/arkts-runtime-overview.md) instance of the main thread so that multiple UIAbility components can run on it. 8 - Manages [ArkTS engine](../arkts-utils/arkts-runtime-overview.md) instances of other threads, for example, using **TaskPool** to create or cancel tasks, and starting and terminating **Worker** threads. 9 - Distributes interaction events. 10 - Processes application code callbacks (event processing and lifecycle management). 11 - Receives messages sent by the **TaskPool** and **Worker** threads. 12- [TaskPool Worker Thread](../reference/apis-arkts/js-apis-taskpool.md) 13 14 Used for time-consuming operations and provides APIs for setting the scheduling priority and load balancing. It is recommended. 15- [Worker Thread](../reference/apis-arkts/js-apis-worker.md) 16 17 Used for time-consuming operations and supports inter-thread communication. 18For details about the operation mechanism, communication method, and usage of **TaskPool** and **Worker**, see [Comparison Between TaskPool and Worker](../arkts-utils/taskpool-vs-worker.md). 19 20 21 22> **NOTE** 23> 24> - **TaskPool** manages the number of threads that can be created and their lifecycle. However, you need to maintain the lifecycle of [Worker](../arkts-utils/worker-introduction.md) threads. 25> - Multiple components can exist in the same thread. For example, both UIAbility and UI components exist in the main thread. In the stage model, [EventHub](#using-eventhub-for-intra-thread-communication) is used for data communication. 26> - To view thread information about an application process, run the **hdc shell** command to enter the shell CLI of the device, and then run the **ps -p *\<pid>* -T command**, where *\<pid>* indicates the [process ID](process-model-stage.md) of the application. 27 28## Using EventHub for Intra-Thread Communication 29 30[EventHub](../reference/apis-ability-kit/js-apis-inner-application-eventHub.md) provides APIs for sending and processing events in threads, including subscribing to, unsubscribing from, and triggering events. [Using EventHub for Data Synchronization](uiability-data-sync-with-ui.md#using-eventhub-for-data-synchronization) describes the development procedure by using data synchronization between the UIAbility component and the UI as an example. 31