Hi 
Threads kann man leider nur ein einziges mal starten. Ich würde Threads aber gerne beliebig oft starten können.
Das ist dabei herausgekommen:
Macht man das so? Ist das richtig?
EDIT: Ich glaube, dieses Thema hätte ich im "Codeschnipsel u. Projekte" öffnen sollen, oder?
Threads kann man leider nur ein einziges mal starten. Ich würde Threads aber gerne beliebig oft starten können.
Das ist dabei herausgekommen:
Java:
class T extends Thread
{
private Boolean self;
T()
{
self = new Boolean(true);
}
public void run()
{
while(true)
{
// Hier irgendwelche Aktionen:
System.out.println("run");
try
{
Thread.sleep(1000); // 1s
}
catch(InterruptedException e)
{
}
// An jedem Schleifenende muss der Thread warten:
synchronized(self)
{
try
{
self.wait(); // Thread wird in den Wartepool gelegt
}
catch(InterruptedException e)
{
}
}
}
}
String go()
{
State s = getState();
System.out.println("state: " + s);
switch(s)
{
case RUNNABLE:
case TIMED_WAITING: // aufgrund des Thread.sleep in run nötig
return "running";
case NEW:
start();
default:
synchronized(self)
{
self.notify(); // Thread aus Wartepool geholt
}
}
return "started";
}
}
class Main
{
public static void main(String[] args)
{
T t = new T();
System.out.println(t.go()); // started
try
{
Thread.sleep(500); // 0.5s
}
catch(InterruptedException e)
{
}
System.out.println(t.go()); // running
try
{
Thread.sleep(1000); // 1s
}
catch(InterruptedException e)
{
}
System.out.println(t.go()); // started
}
}
EDIT: Ich glaube, dieses Thema hätte ich im "Codeschnipsel u. Projekte" öffnen sollen, oder?
Zuletzt bearbeitet: