1# Efficient Concurrent Programming
2
3Concurrency refers to the capability of processing multiple tasks in the same period. To improve the response speed and frame rate of applications and prevent time-consuming tasks from blocking the main thread, the system provides two policies: asynchronous concurrency and multithread concurrency.
4
5Asynchronous concurrency means that an action in asynchronous code is suspended and will continue later. Only one segment of code is being executed at a time.
6
7Multithread concurrency allows multiple segments of code to be executed at a time. When the main thread continues to respond to user operations and update the UI, time-consuming operations are performed in the background to avoid application freezing.
8
9Concurrency is used in a variety of scenarios, including a single I/O task, CPU intensive task, I/O intensive task, synchronous task, and the like. You can select a concurrency policy based on your scenario.
10
11ArkTS provides the following mechanisms to support asynchronous concurrency and multithread concurrency:
12
13- Using asynchronous concurrency for development
14    - [Asynchronous Concurrency Overview](../arkts-utils/async-concurrency-overview.md)
15    - [Single I/O Task Development](../arkts-utils/single-io-development.md)
16- Using multithread concurrency for development
17    - [Multithread Concurrency Overview](../arkts-utils/multi-thread-concurrency-overview.md)
18    - [Comparison Between the Actor and Memory Sharing Models](../arkts-utils/actor-model-development-samples.md)
19    - [Comparison Between TaskPool and Worker](../arkts-utils/taskpool-vs-worker.md)
20    - [CPU Intensive Task Development](../arkts-utils/cpu-intensive-task-development.md)
21    - [I/O Intensive Task Development](../arkts-utils/io-intensive-task-development.md)
22    - [Synchronous Task Development](../arkts-utils/sync-task-development.md)
23