Roundbased - Thread anhalten

Status
Nicht offen für weitere Antworten.

manuche

Bekanntes Mitglied
Ich programmiere grade ein rundenbasierendes und netzwerkfähiges Spiel.
Im Hintergrund läuft der Serverthread! Wenn man auf diesen Server connectet wird der Thread bei der Methoder server.accept() ja solange angehalten, bis ein Client connectet... Nun würde ich gerne den Thread so lange anhalten, bis der Anwender auf den Button "Runde beenden" klickt!
Die Frage ist nur wie man sowas implementiert! Gibt es Methoden die sowas bereitstellen, oder ist sowas nur mit ner Endlosschleife, die in regelmäßigen Abständen den Buttonstatus abfragt zu realisieren?
Gruß manuche
 
S

SlaterB

Gast
'Nun würde ich gerne den Thread so lange anhalten'
gehts auch genauer? davor hast du von einem Thread geredet der auf Clients wartet, also praktisch schon angehalten ist,
willst du den anhalten oder wen anders?

bezieht sich das Anhalten darauf, dass nicht mehr auf Clients gewartet wird, doch noch, was anderes nicht oder bin ich ganz verrückt?

das server.accept() kannst du jedenfalls nicht unterbrechen,
da ist das Setzen eines Timeouts nötig, was wohl gehen soll
 

manuche

Bekanntes Mitglied
Sorry für die Ausdrucksweise... xD
Also das server.accept() war nen Beispiel! Genau den Effekt, den diese Methode hat (Thread blockieren, bis ein Ereignis eintritt) würde ich gerne selber erezugen! Bei server.accept() wartet der Serverthread bis ein Client connectet und in meinem Fall soll der Serverthread warten, bis der Anwender seinen Spielzug beendet und auf seinen Button geklickt hat...
Hoffe das war verständlicher....
 
S

SlaterB

Gast
ein Thread tut nix wenn man ihn mit Thread.sleep() warten lässt,
wobei man das nicht aktiv von einem anderen Thread aus machen kann,
man setzt ein Flag und der Thread legt sich dann bei nächster Gelegenheit selber schlafen

mit thread.interrupt() kann man ihn aufwecken

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Runnable r = new Runnable()
            {
                public void run()
                {
                    System.out.println("t: gehe schlagen");
                    try
                    {
                        Thread.sleep(1000000);
                    }
                    catch (InterruptedException e)
                    {
                        System.out.println("t: InterruptedException");
                    }
                    System.out.println("t: wache auf");
                }

            };
        Thread t = new Thread(r);
        t.start();
        Thread.sleep(1000);
        System.out.println("main: wecke gleich");
        t.interrupt();
    }
}
 

manuche

Bekanntes Mitglied
Ja ok die sleep Methode kenne ich... Zwei Fragen:

- heisst interrupt nicht sowas wie "unterbrechen"? Würde doch eigentlich soviel bedeutet, dass ich den laufenden Thread unterbreche und nicht seine Pause...
- Wenn ich den Thread per Button wieder laufen lassen will komm ich wohl um eine Schleife nicht rum, oder? Dachte da grade so an einen Button mit dem einfach nur ein boolischer Ausdruck geändert wird und dieser boolische Ausdruck dann die Abbruchbedingung der Schleife ist... (In der Schleife dann immerwieder thread.sleep(...))
 
S

SlaterB

Gast
> heisst interrupt nicht sowas wie "unterbrechen"? Würde doch eigentlich soviel bedeutet, dass ich den laufenden Thread unterbreche und nicht seine Pause...

du machst dir Gedanken, schön,
bei sowas kommt aber nicht immer das richtige raus ;)
besser nachlesen

> komm ich wohl um eine Schleife nicht rum, oder?

das denke ich auch
 
S

SlaterB

Gast
nicht dass die API bei so einem Grundlagen-Thema alles erschlagen muss,
aber bisschen mehr steht da schon:

If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) methods of the Object class, or of the join(), join(long), join(long, int), sleep(long), or sleep(long, int), methods of this class, then its interrupt status will be cleared and it will receive an InterruptedException.

If this thread is blocked in an I/O operation upon an interruptible channel then the channel will be closed, the thread's interrupt status will be set, and the thread will receive a ClosedByInterruptException.

If this thread is blocked in a Selector then the thread's interrupt status will be set and it will return immediately from the selection operation, possibly with a non-zero value, just as if the selector's wakeup method were invoked.

If none of the previous conditions hold then this thread's interrupt status will be set.

Interrupting a thread that is not alive need not have any effect.
 
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
Tapsi Thread wartet auf Threads 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
D Wasserstrahl animieren: ein Thread je Tropfen? Spiele- und Multimedia-Programmierung 7
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben