Avatar ·

Was bedeutet eine suspend-Funktion in Kotlin Coroutines? Erklärung für Anfänger

Hallo zusammen! Ich habe angefangen, Coroutines in Kotlin zu lernen und verstehe nicht, was eine suspend-Funktion ist. In der Dokumentation steht, dass es eine "aussetzbare Funktion" ist, aber das sagt mir nichts. Ich habe versucht, einfachen Code zu schreiben, aber er kompiliert nicht: ```kotlin fun main() { fetchUserData() // Fehler: Suspend function 'fetchUserData' should be called only from a coroutine or another suspend function } suspend fun fetchUserData(): String { delay(1000) // Simulation einer langen Operation return "User data" } ``` Warum kann ich diese Funktion nicht einfach aus main aufrufen? Was ist "suspend" eigentlich? Wie funktioniert es unter der Haube? Ich habe von async/await in anderen Sprachen gelesen, aber hier sieht alles anders aus. Erklärt mir bitte in einfachen Worten mit Beispielen, was eine suspend-Funktion ist und wofür sie gebraucht wird. Besonders interessiert mich: 1. Was passiert mit dem Thread, wenn eine suspend-Funktion aufgerufen wird? 2. Wie unterscheidet sie sich von einer normalen Funktion? 3. Warum kann man sie nicht aus einer normalen Funktion aufrufen?