mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
threading_model.md: Expose recommended read/write action APIs
This commit is contained in:
parent
7f44b101df
commit
c41a52da16
@ -146,6 +146,29 @@ Read and write actions allow executing a piece of code under a lock, automatical
|
|||||||
#### API
|
#### API
|
||||||
{#read-actions-api}
|
{#read-actions-api}
|
||||||
|
|
||||||
|
- [`ReadAction`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/ReadAction.java) `run()` or `compute()`:
|
||||||
|
<tabs group="languages">
|
||||||
|
<tab title="Kotlin" group-key="kotlin">
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val psiFile = ReadAction.compute<PsiFile, Throwable> {
|
||||||
|
// read and return PsiFile
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</tab>
|
||||||
|
<tab title="Java" group-key="java">
|
||||||
|
|
||||||
|
```java
|
||||||
|
PsiFile psiFile = ReadAction.compute(() -> {
|
||||||
|
// read and return PsiFile
|
||||||
|
});
|
||||||
|
```
|
||||||
|
</tab>
|
||||||
|
</tabs>
|
||||||
|
|
||||||
|
##### Alternative APIs
|
||||||
|
{#read-action-alternative-apis collapsible=true default-state=collapsed}
|
||||||
|
|
||||||
- [`Application.runReadAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/Application.java):
|
- [`Application.runReadAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/Application.java):
|
||||||
<tabs group="languages">
|
<tabs group="languages">
|
||||||
<tab title="Kotlin" group-key="kotlin">
|
<tab title="Kotlin" group-key="kotlin">
|
||||||
@ -166,26 +189,7 @@ Read and write actions allow executing a piece of code under a lock, automatical
|
|||||||
```
|
```
|
||||||
</tab>
|
</tab>
|
||||||
</tabs>
|
</tabs>
|
||||||
|
Note that this API is considered low-level and should be avoided.
|
||||||
- [`ReadAction`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/ReadAction.java) `run()` or `compute()`:
|
|
||||||
<tabs group="languages">
|
|
||||||
<tab title="Kotlin" group-key="kotlin">
|
|
||||||
|
|
||||||
```kotlin
|
|
||||||
val psiFile = ReadAction.compute<PsiFile, Throwable> {
|
|
||||||
// read and return PsiFile
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</tab>
|
|
||||||
<tab title="Java" group-key="java">
|
|
||||||
|
|
||||||
```java
|
|
||||||
PsiFile psiFile = ReadAction.compute(() -> {
|
|
||||||
// read and return PsiFile
|
|
||||||
});
|
|
||||||
```
|
|
||||||
</tab>
|
|
||||||
</tabs>
|
|
||||||
|
|
||||||
- Kotlin [`runReadAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/actions.kt):
|
- Kotlin [`runReadAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/actions.kt):
|
||||||
```kotlin
|
```kotlin
|
||||||
@ -262,26 +266,6 @@ gantt
|
|||||||
#### API
|
#### API
|
||||||
{#write-actions-api}
|
{#write-actions-api}
|
||||||
|
|
||||||
- [`Application.runWriteAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/Application.java):
|
|
||||||
<tabs group="languages">
|
|
||||||
<tab title="Kotlin" group-key="kotlin">
|
|
||||||
|
|
||||||
```kotlin
|
|
||||||
ApplicationManager.application.runWriteAction {
|
|
||||||
// write data
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</tab>
|
|
||||||
<tab title="Java" group-key="java">
|
|
||||||
|
|
||||||
```java
|
|
||||||
ApplicationManager.getApplication().runWriteAction(() -> {
|
|
||||||
// write data
|
|
||||||
});
|
|
||||||
```
|
|
||||||
</tab>
|
|
||||||
</tabs>
|
|
||||||
|
|
||||||
- [`WriteAction`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/WriteAction.java) `run()` or `compute()`:
|
- [`WriteAction`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/WriteAction.java) `run()` or `compute()`:
|
||||||
<tabs group="languages">
|
<tabs group="languages">
|
||||||
<tab title="Kotlin" group-key="kotlin">
|
<tab title="Kotlin" group-key="kotlin">
|
||||||
@ -302,6 +286,30 @@ gantt
|
|||||||
</tab>
|
</tab>
|
||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
|
##### Alternative APIs
|
||||||
|
{#write-action-alternative-apis collapsible=true default-state=collapsed}
|
||||||
|
|
||||||
|
- [`Application.runWriteAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/Application.java):
|
||||||
|
<tabs group="languages">
|
||||||
|
<tab title="Kotlin" group-key="kotlin">
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
ApplicationManager.application.runWriteAction {
|
||||||
|
// write data
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</tab>
|
||||||
|
<tab title="Java" group-key="java">
|
||||||
|
Note that this API is considered low-level and should be avoided.
|
||||||
|
|
||||||
|
```java
|
||||||
|
ApplicationManager.getApplication().runWriteAction(() -> {
|
||||||
|
// write data
|
||||||
|
});
|
||||||
|
```
|
||||||
|
</tab>
|
||||||
|
</tabs>
|
||||||
|
|
||||||
- Kotlin [`runWriteAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/actions.kt):
|
- Kotlin [`runWriteAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/actions.kt):
|
||||||
```kotlin
|
```kotlin
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user