104 lines
1.6 KiB
Java
104 lines
1.6 KiB
Java
class PR27908
|
|
{
|
|
public static void main (String[] argv)
|
|
throws InterruptedException
|
|
{
|
|
run1 r1 = new run1();
|
|
run2 r2 = new run2();
|
|
run3 r3 = new run3();
|
|
|
|
Thread t1, t2, t3;
|
|
|
|
(t1 = new Thread (r1)).start();
|
|
(t2 = new Thread (r2)).start();
|
|
(t3 = new Thread (r3)).start();
|
|
|
|
while (! (r1.isRunning() && r2.isRunning() && r3.isRunning()))
|
|
Thread.yield();
|
|
|
|
r1.stop();
|
|
r2.stop();
|
|
r3.stop();
|
|
|
|
Thread.sleep(5000);
|
|
|
|
if (t1.isAlive() || t2.isAlive() || t3.isAlive())
|
|
{
|
|
System.out.println ("fail");
|
|
System.exit(1);
|
|
}
|
|
}
|
|
|
|
private static class run1 implements Runnable
|
|
{
|
|
volatile int counter;
|
|
volatile boolean running;
|
|
|
|
public void run ()
|
|
{
|
|
counter = 0;
|
|
running = true;
|
|
while (running)
|
|
counter++;
|
|
}
|
|
|
|
void stop ()
|
|
{
|
|
running = false;
|
|
}
|
|
|
|
public boolean isRunning()
|
|
{
|
|
return running;
|
|
}
|
|
}
|
|
|
|
private static class run2 implements Runnable
|
|
{
|
|
volatile int counter;
|
|
boolean running;
|
|
|
|
public void run ()
|
|
{
|
|
counter = 0;
|
|
running = true;
|
|
while (running)
|
|
counter++;
|
|
}
|
|
|
|
void stop ()
|
|
{
|
|
running = false;
|
|
}
|
|
|
|
public boolean isRunning()
|
|
{
|
|
return running;
|
|
}
|
|
}
|
|
|
|
static class run3 implements Runnable
|
|
{
|
|
volatile int counter;
|
|
private volatile boolean running;
|
|
|
|
public void run ()
|
|
{
|
|
counter = 0;
|
|
running = true;
|
|
while (running)
|
|
counter++;
|
|
}
|
|
|
|
void stop ()
|
|
{
|
|
running = false;
|
|
}
|
|
|
|
public boolean isRunning()
|
|
{
|
|
return running;
|
|
}
|
|
}
|
|
}
|