Wie Sie initialisiert einen Thread in Kotlin?
In Java es funktioniert durch die Annahme eines Objekt implementiert die runnable :
Thread myThread = new Thread(new myRunnable())
wo myRunnable
ist eine Klasse Umsetzung Runnable
.
Aber wenn ich versuchte dies in Kotlin, es scheint nicht zu funktionieren:
var myThread:Thread = myRunnable:Runnable
var myThread = Thread(myRunnable())
Es Hat Funktioniert!! Können Sie mir helfen zu verstehen, dieses Stück code?
Dabei
myThread:Thread
sagt, dass die variable myThread
ist der Typ Thread
. Und dabei myRunnable:Runnable
hat keinen Sinn was so überhaupt. Initialisieren von Klassen in Kotlin ist sehr ähnlich zu Java. Sie entfernen Sie einfach das new
Schlüsselwort. Relevante Kotlin-Dokumentation: , bDanke. So x:X format funktioniert für Klassen, aber nicht für Schnittstellen?
Es funktioniert für Schnittstellen, aber wenn Sie das tun
x = Y:y
die Y:y
Teil macht keinen Sinn.InformationsquelleAutor Shubhranshu Jain | 2017-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Initialisierung ein Objekt der
Thread
Sie einfach den Konstruktur aufrufen:Dann können Sie auch eine optionale
Runnable
mit einem lambda-SAM (Umwandlung) wie folgt:Mehr explicit version übergeben wird eine anonyme Implementierung von
Runnable
wie diese:Beachten Sie, dass die zuvor gezeigten Beispiele stellen nur erstellen eine Instanz einer
Thread
aber eigentlich gar nicht starten. Um das zu erreichen, müssen Sie zum aufrufenstart()
ausdrücklich.Last but not least, müssen Sie wissen, die standard-library-Funktion
thread
, die ich empfehlen würde zu verwenden:Können Sie es verwenden, wie diese:
Es hat viele optionale Parameter für z.B. direktes starten der thread, wie hier gezeigt.
InformationsquelleAutor s1m0nw1
Runnable:
Thread:
Sieht man nicht einen Thread hier: in Kotlin es kann leicht ersetzt werden mit einem lambda-Ausdruck. Gibt es einen besseren Weg? Sicher!!! Hier ist, wie können Sie instanziieren und starten einer
thread Kotlin-Stil:
InformationsquelleAutor Rajesh Dalsaniya
Versuchen Sie bitte diesen code:
Während dieser kann die Frage beantworten, ist es besser zu erklären, die wesentliche Teile der Antwort, und möglicherweise, was war das problem mit OPs-code.
InformationsquelleAutor Hardeep singh
Habe ich Folgendes und es scheint zu funktionieren wie erwartet.
InformationsquelleAutor Adam Hurwitz
Beste Weg wäre, um
thread()
generator-Funktion vonkotlin.concurrent
:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.concurrent/thread.html
Sollten Sie überprüfen Sie Ihre Standard-Werte, wie Sie sind sehr nützlich:
Beachten Sie, dass Sie brauchen nicht zu rufen
start()
wie in dem Thread Beispiel, oder bietenstart=true
.Vorsichtig sein mit threads, die laufen für eine lange Zeit. Es ist nützlich, um anzugeben
thread(isDaemon= true)
so dass Ihre Anwendung wäre in der Lage zu beenden, richtig.InformationsquelleAutor Alexey Soshin
InformationsquelleAutor geekowll