Frage von EvilMastermind, 12

Bukkit wie kann man von einem anderen Thread Methoden aufrufen die über den Main thread ausgeführt werden?

Ist es möglich einen Synchronen Scheduler Aufgaben von einem anderen Thread aufzurufen (Mein Plugin läuft eigentlich komplett in einem eigenen Thread weil es eigentlich auch was komplett eigenes macht, soll aber in (seltenen) Fällen trotzdem auf die Bukkit API zugreifen können) um somit code threadsicher aufzurufen der die Bukkit API verwendet?

http://wiki.bukkit.org/Scheduler_Programming/de#Synchrone_Aufgaben

"Synchrone Aufgaben[edit | edit source] Das sind Aufgaben, die von Haupt-Thread ausgeführt werden."

"Thread-sichere API Methoden[edit | edit source] Bukkit API Methoden, die Thread-sicher sind, sind:

Alle Scheduler Methoden

..."

Interpretiere ich richtig das das also kein Problem sein sollte? Gibt es noch andere (bessere) Methoden?

Antwort
von PerfectMuffin, 12

Die einzige wirkliche Gefahr bei Threads besteht darin, dass zwei Threads gleichzeitig einen bestimmten Wert ändern wollen, wenn die Änderung des Wertes nicht synchronisiert ist(synchronisiert = wenn mehrere Threads darauf zugreifen wollen, wird einer zum Warten gezwungen).

Kommentar von EvilMastermind ,

Naja es geht ja um ein Bukkit Plugin und um die Bukkit API. Anscheinend darf man bei Bukkit Plugins die meistens Methoden der API nicht von einem anderen Thread aus benutzen da alles über den Haupt thread gemacht wird und alles nacheinander ablaufen muss. Es gibt zwar auch Methoden die als Threadsicher gelten aber die die ich benutzen will halt nicht (soweit ich weiß). Deswegen soll halt was, wenn ich es in meinem Thread brauche, über den Hauptthread ausgeführt werden und dann brauch ich halt die Ergebnisse daraus wieder in meinem Thread :3 das blick ich halt gerade nicht ganz.

Kommentar von PerfectMuffin ,

Was macht der Nebenthread eigentlich die ganze Zeit? Kannst du nicht im Nebenthread sammeln, wa sim Hauptthread zu tun ist und ihn das machen lassen, wenn er mal wieder vorbeikommt?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten