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
|
||||
{#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):
|
||||
<tabs group="languages">
|
||||
<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>
|
||||
</tabs>
|
||||
|
||||
- [`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>
|
||||
Note that this API is considered low-level and should be avoided.
|
||||
|
||||
- Kotlin [`runReadAction()`](%gh-ic%/platform/core-api/src/com/intellij/openapi/application/actions.kt):
|
||||
```kotlin
|
||||
@ -262,26 +266,6 @@ gantt
|
||||
#### 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()`:
|
||||
<tabs group="languages">
|
||||
<tab title="Kotlin" group-key="kotlin">
|
||||
@ -302,6 +286,30 @@ gantt
|
||||
</tab>
|
||||
</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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user