aufrufen von main-thread aus der Runnable thread in java
habe ich implementiert ein Runnable-Schnittstelle zum laden der Bild-Kacheln und ich will rufen den Haupt-thread von dieser zweiten thread für die Darstellung der Kacheln.
kann mir jemand sagen, wie aufrufen, eine Haupt-thread aus einer Runnable-Schnittstelle thread in Java.
Dank.
- Es ist im Allgemeinen gutes design zu nennen anderen thread von der main-thread.
- was tun Sie (und der OP) meinen, wenn Sie sagen, "rufen Sie einen weiteren thread"?
- Ich denke OP will call Haupt-thread aus einem anderen thread angefangen vom main. so etwas wie ideone.com/G8gLN
- machst du eine Swing-app? Willst du damit Fragen, wie man im Event Dispatch Thread, etwas zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt
Runnable
können SieCallable<Set<Image>>
liefert einen Satz von geladenen Bilder. Reichen diese callable Aufgabe, ein Testamentsvollstrecker, Holen Sie sich dieFuture<Set<Image>>
und warten Sie für das laden thread, um seine Arbeit fertig zu stellen.Beispiel:
Future.get()
funktionieren würde über eine Sammlung von Futures und möglicherweise verwenden Sie einen ExecutorService mit mehr als einem einzigen Thread.Future.isDone
. Oder man könnte einBlockingQueue
und führen Sie einepoll
ähnlich durchführen busy-waiting. Oder verwenden SieBlockingQueue.take
zu stoppen, bis etwas stellt eine Nachricht in die queue.Was meinst du mit "call a thread"?
Du willst wohl irgendwie "informieren" der Haupt-thread, dass die Bilder geladen wurden. Man könnte dies, indem zum Beispiel die Vermietung der Haupt-thread
wait()
für die load-thread zunotify()
es, dass die Bilder geladen wurden.Vorzugsweise sollten Sie jedoch verwenden Sie eine der mehr "high-level" - concurrency-Klassen in der
java.util.concurrent
Paket. Zum BeispielCallable
undFuture
wie vorgeschlagen von Boris Pavlović. Es ist ein Beispiel für die Nutzung in die Dokumentation vonZukunft
.Kann man nicht wirklich "rufen" ein thread aus einem anderen. Was Sie tun können, ist eine Warteschlange für Nachrichten: den zweiten thread setzen würde, die Nachrichten in die Warteschlange und der Haupt-thread würde Sie abholen, aus der Warteschlange und verarbeiten.
Ich glaube von "nennen den thread" der Autor gedacht, irgendeine Art von Rückruf aus der Arbeits-thread den Haupt-thread benachrichtigt wird, über einige Art von Veranstaltung.
Gibt es eine Menge von Möglichkeiten zu implementieren, die Art der callback-aber ich würde mit einem einfachen listener-Schnittstelle. So etwas wie dieses:
Wenn Sie es brauchen, skalierbar dann würde ich empfehlen zu tauschen, um einige Umsetzung von Event-Bus-Muster. Zum Beispiel: http://code.google.com/p/simpleeventbus/
Event-bus ist in der Regel das gleiche wie schrieb ich in meinem Beispiel aber sehr gut skalierbar. Hauptunterschied ist, können Sie verwalten verschiedene Arten von Veranstaltungen und registrieren viele Hörer auf einmal.