Thread wartet auf Threads

Status
Nicht offen für weitere Antworten.

Tapsi

Mitglied
Ich habe nun mehrere Threads die sich um etwas kümmern nebeneinander her und ich suche schon im ganzen forum nach der Möglichkeit sehe aber nicht durch.

Meine Frage ist :


Wie geht es dass ein Thread X auf die Threads 1,2,3,4 und 5 wartet bis sie fertig sind mit einen durchlauf ?
Wenn Thread X losloegt , sollen die 5 anderen natürich warten bis Thread X fertig und und dann selber weitermachen.
 
S

SlaterB

Gast
hast du denn die Grundlagen schon kennengelernt wie synchronized/ wait()/ notify()
oder ein simples boolean-Flag und wiederholtes sleep() solange nicht die Info kommt, dass es weitergeht (Flag ändert sich)?

darüber hinaus gibt es in diesem Fall noch Thread.join(), sofern man das Thread-Objekt des anderen Threads direkt kennt
 

Tapsi

Mitglied
Habe ich dass bis jetzt richtig vertsanden wenn ich eine Klasse TAsk_XY erstelle und davon 2 Objekte ( Threads ) erstelle können beide nicht gleichzeitig auf eine Methode in Task_XY zugreifen ??

MEine Idee war dass ein Spielfeld 40x40 Felder hat und für jede Reihe ein Thread erstellt wird der die jeweilige Reihe zeichnet. Die Methode zeichne greift auf eine variable grafik_reihe (BufferedImage) und zeichnet die komplette Reihe.

Am ende holt die Spielschleife sich alle einzellnen Reihen zurück und zeichnet aus denen das ganze Feld.

MEine erste war das jeder Thread direkt eine Reihe auf die Endgrafik malt, aber threads können nicht alle gemeinsam in das FEld gleichzeitig malen bzw zugreifen .. .oder irre ich mich da ?
 
S

SlaterB

Gast
> wenn ich eine Klasse TAsk_XY erstelle und davon 2 Objekte ( Threads ) erstelle können beide nicht gleichzeitig auf eine Methode in Task_XY zugreifen ??

was ist 'eine Methode in Task_XY', ist eine statische Methode gemeint oder eine nicht-statische?
bei nicht-statischen ist bei unterschiedlichen Objekt eh nicht viel gemeinsam..

ohne Synchronisierung können normalerweise beliebige Threads querbeet durcheinander alle möglichen Methoden ausführen

> MEine erste war das jeder Thread direkt eine Reihe auf die Endgrafik malt, aber threads können nicht alle gemeinsam in das FEld gleichzeitig malen bzw zugreifen .. .oder irre ich mich da ?

wäre auszuprobieren,
klingt auf jeden Fall sinnvoll, dass nie zu tun, dass kann ja auch nicht länger als 1 ms dauern, wieso überhaupt getrennte Threads?

falls vor dem Zeichnen irgendwelche aufwendigen Berechnungen durchzuführen sind,
so kommen die sich in mehreren Threads zumindest nicht gegenseitig in die Quere
 

Tapsi

Mitglied
Ich dachte so könnte die Grafikberechnung schneller sein.

Im prinzip geht jeder Thread in seiner Reihe Feld für Feld nach unten.
Erst Feld Zeichnen und dann die Einheit , dann zum Feld darunter und das gleiche Nochmal.

Oder doch lieber so :


ein Grafik-Thread der alleine Das Feld zeichnet
ein Spiel-Thread der auf die MAus achtet und Berechnungen durchführt etc.

DAs Problem mit der Grafik ist , 40 x 40 also 1600 * 2 ( wegen Einheiten ) heißt 3200 drawImage dauert schon 500 ms...
Da dachte ich aufteilen in 40 Reihen Threads.
Meine nur ein Thread Lösung bestand bis jetzt daraus , das Feld zu zeichnen zu speichern . Dann in jedem Thread Schritt erst das Grundfeld zu holen und dann die Einheiten raufzumachen und das ans FEnster weiterzugeben. Das Problem ist das Einheiten zBsp Berge übermalen obwohl sie dahinter sein müssten.

Vielleicht jemand ne Lösung ?

==> 40 reihen Threads ???
==> FEld vorher berechnen und dann Einheiten rübermalen ???

oder gibs noch ne andere schnellere Lösung ?
 
S

SlaterB

Gast
zu sparsamer Grafik-Arbeit kann ich wenig beitragen,
nur zur Logik: nur weil Arbeit auf 40 Threads aufgeteilt wird, verringert sich nicht die Zeit, um diese zu erledigen,

die 40 Threads müssen sich alle einen Prozessor teilen, mit etwas Glück vielleicht 2 oder 4 auf deinem Rechner, aber 40 Prozessorkerne wirst du gewiss nicht haben,

es gibt nur wenige Aufgaben, wo Threads Arbeitszeit sparen, etwa wenn Festplattenzugriffe eine Rolle spielen,
was in den 500 ms Zeichnen hoffentlich nicht auch der Fall ist (oder hoffentlich doch, dann ließe sich noch Zeit einsparen)


in den meisten Fällen übernehmen Thread eher organisatorische Aufgaben,
wenn etwa zwei Spieler ihre jeweiligen Ziele verfolgen, wäre es für nur einen Thread mühsam,
die ersten 100 ms Aufgaben für Spieler A zu erledigen, dann mal wieder 100 ms Aufgaben für Spieler B usw.,
 

Tapsi

Mitglied
Achso , das gleiche habe ich mir auch gerade gedacht, schon logisch da die Arbeit die gleiche bleibt...

Dann mache ich einen Thread der sich nur um die Grafik kümmert und einen der sich um die Ereignisse des Spiels kümmert :D

Wäre es vielleicht auch im Multiplayer sinnvoll für jeden Spieler ein Thread zu nehmen ?

Ich danke trotzdem das du mein Verständniss für Threads etwas verbessert hast.

PS : Cooles Forum , will ich mal so sagen :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
O Thread pausieren und wieder starten Spiele- und Multimedia-Programmierung 2
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
gamebreiti Daemon Thread Spiele- und Multimedia-Programmierung 4
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
Kenan89 Alternative zu Thread Runnable Spiele- und Multimedia-Programmierung 2
O Universe <- show Thread Spiele- und Multimedia-Programmierung 14
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
C ***** bitte thread löschen *** Spiele- und Multimedia-Programmierung 3
A KeyListener - Thread Problem Spiele- und Multimedia-Programmierung 2
D Snake n+1-Thread Spiele- und Multimedia-Programmierung 2
B Applet startet, aber führt den Thread nicht aus Spiele- und Multimedia-Programmierung 7
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
G Thread startet nicht im Vollbild modus Spiele- und Multimedia-Programmierung 3
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
F Problem mit Thread.sleep() Spiele- und Multimedia-Programmierung 7
M Thread.sleep() problem Spiele- und Multimedia-Programmierung 10
0 Workaround für Thread.sleep()-Bug Spiele- und Multimedia-Programmierung 15
M Roundbased - Thread anhalten Spiele- und Multimedia-Programmierung 8
D Wasserstrahl animieren: ein Thread je Tropfen? Spiele- und Multimedia-Programmierung 7
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3
S ständig neue Threads Spiele- und Multimedia-Programmierung 4
E Zwei Threads miteinander laufen lassen Spiele- und Multimedia-Programmierung 6
Z Objekte animieren mit Threads Spiele- und Multimedia-Programmierung 4
M Minecraft Minecraft, MySQL und Threads Spiele- und Multimedia-Programmierung 12
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
F Java zwei gleiche Threads mit unterschiedlichen Parametern Spiele- und Multimedia-Programmierung 2
L Synchronisierung von Threads die Antwort? Spiele- und Multimedia-Programmierung 8
J Frage zu Threads Spiele- und Multimedia-Programmierung 5
I Problem mit Threads Spiele- und Multimedia-Programmierung 25
L Threads: Denkzeit-Timer Spiele- und Multimedia-Programmierung 3
hdi mehrere Threads/Tasks in einem synchronisieren -> TaskPoo Spiele- und Multimedia-Programmierung 36
0 Problem mit zeitsynchroner Hauptschleife/Threads Spiele- und Multimedia-Programmierung 28
D threads in j3d? Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben