suspend und resume

Status
Nicht offen für weitere Antworten.
A

alex2iceman

Gast
Hallo!

Wie kann ich in innerhalb der Methode "MouseDown" einen Thread durch suspend zum Stehen bringen (das kriege ich noch hin) und danach natürlich wieder zum Laufen durch Resume. Suspend und Resume sollen jeweils durch einen Mausklich ausgeführt werden.
Wie gesagt, den ersten Mausklick kriege ich noch hin, aber wie ich beim zweiten Mausklich prüfen soll, ob der Thread suspendiert ist oder nicht, das kriege ich nicht hin.

Soll übrigens eine Hausaufgabe sein für die Schule.

MfG
 
A

alex2iceman

Gast
L-ectron-X hat gesagt.:
Was schreibst Du denn, um den Thread anzuhalten?

Also hier der Quellcode
Code:
public class ThomasApplet extends Applet implements Runnable
{

public Thread T = null;
public Font font;
public String s;
public int xpos;
public int geschw;
int x=1;
 public void init()
{ 

setBackground(Color.blue);
xpos = size().width;
geschw = 4;
font = new Font("TimesRoman",Font.BOLD,30);
s = "Info: Ich bin zur Zeit im Urlaub ...!";

}

public void paint(Graphics g)
{

g.setColor(Color.white);
g.setFont(font);
g.drawString(s,xpos,30);

}

public void setxpos()
{

xpos = xpos - geschw;
if(xpos<=0) xpos = size().width;

}



public void start()
{

if (T==null){T=new Thread(this); T.start();x=1;}

}

public void stop()
{

if (T != null){T.stop(); T=null;}

}

public void run()
{

while(T != null)
{

try {Thread.sleep(50);}
catch(InterruptedException e) {}
setxpos();
repaint();

}

}

public boolean mouseDown(Event evt, int x, int y)
{
	T.suspend();
	return true;
}


}
[/code]
 
A

alex2iceman

Gast
wie du siehst muß ich in der Methode Mousedown suspend und resume anwenden. ich weiß nur nicht wie
 

Illuvatar

Top Contributor
Mach doch eine private Variable suspended = false;
Und die mouseDown-Methode dann:
Code:
if (suspended)
  T.resume();
else
  T.suspend();
suspended = !suspended;
 
A

alex2iceman

Gast
wo soll ich die Anweisung suspended = false einbauen und was nützt das? Ich würde auch gerne verstehen was ich da mache, sonst kann ich auf die Fragen des Lehrers gar nicht antworten können
 

bummerland

Top Contributor
resume und suspend sind deprecated und sollten nicht mehr angewendet werden, da sie unsicher sind.
es ist aber trotzdem möglich, threads zu pausieren und fortzusetzen:
Code:
class MyThread extends Thread{
    private boolean pause = false;
    
    public void run(){
        try {
            if (pause){
                synchronized(this){
                    wait();
                }
            }
        }
        catch(InterruptedException e){
            e.printStackTrace();
        }
    }

    public void pause(){
        synchronized(this){
            this.pause = true;
            this.notify();
        }
    }
    
    public void unpause(){
        synchronized(this){
            this.pause = false;
            this.notify();
        }
    }
}
 
A

alex2iceman

Gast
ich weiß ja dass sie nicht mehr angewendet sollen, aber in der Schule müssen wir sie leider kennen lernen und darum gehts nicht anders. Hättest du nicht einen Lösungsvorschlag mit diesen beiden Befehlen??

Danke für deine Mühen!
 

Illuvatar

Top Contributor
Ich meinte nichts weiter als das hier ???:L :
Code:
private boolean suspended = false;
public boolean mouseDown(Event evt, int x, int y) 
{ 
   if (suspended)
      T.resume();
   else
      T.suspend();
   suspended = !suspended;
}
 
A

alex2iceman

Gast
Ich habe jetzt verstanden was du mit deinem ersten code meintest! Danke!
 
A

alex2iceman

Gast
OK, soweit so gut. Aber aus irgendeinem Grund stoppt der Thread zwar, läuft dann aber nicht mehr an. Es kommt auch keine Fehlermeldung.
Aber du hast mich schon mal in die richtige Richtung gewiesen, danke.
 
A

alex2iceman

Gast
So jetzt habe ich es!
Code:
public boolean mouseDown(Event evt, int x, int y) 
{ 
   if (suspended) 
   {
      T.resume(); 
	  suspended = !suspended;
   }
   else 
   {
      T.suspend(); 
	  suspended = !suspended; 
   }
	return true;
}

Danke für deine Hilfe!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben