Hallo Experten,
Ich habe das Gefühl, etwas Grundlegendes bzgl. Threads nicht verstanden zu haben. Ich möchte das an Hand von zwei Klassen erläutern :
Das Problem ist, dass jedesmal, wenn ich auf den Button klicke, die Animation schneller läuft.
Wie kommt das ? Habe ich vllt zu viele Threads rzeugt ? Aber ich stoppe den alten doch jedes Mal !
Kann mit jemand das erklären ?
Ich habe das Gefühl, etwas Grundlegendes bzgl. Threads nicht verstanden zu haben. Ich möchte das an Hand von zwei Klassen erläutern :
Java:
import javax.swing.JApplet;
public abstract class AppletBasis extends JApplet implements Runnable
{
protected Thread running;
protected static long msec;
public abstract void run();
public void starten()
{ if (running == null);
{ running = new Thread(this);
running.start();
}
}
public void stop()
{ running = null;
}
public void verzoegerung()
{ try {Thread.sleep (msec);}
catch(Exception e){}
}
}
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class AppletErbe extends AppletBasis
{
private static final long serialVersionUID = 1L;
JButton bStart;
int a = 0;
public void init()
{
msec = 200;
bStart = new JButton("START");
bStart.addActionListener
(new ActionListener() // Start-Button
{public void actionPerformed(ActionEvent e)
{
stop();
starten();
}}
);
setLayout(new BorderLayout());
add("South", bStart);
}
public void run()
{
while(true)
{
a = (a+10)%360;
repaint();
verzoegerung ();
}
}
public void paint(Graphics g)
{
g.setColor(Color.white);
g.fillRect(50, 50, 100, 100);
g.setColor(Color.pink);
g.fillArc(50, 50, 100, 100, a, 60);
}
}
Wie kommt das ? Habe ich vllt zu viele Threads rzeugt ? Aber ich stoppe den alten doch jedes Mal !
Kann mit jemand das erklären ?