mirror of
https://github.com/2003scape/deep-c-rsc.git
synced 2024-03-22 05:49:51 -04:00
111 lines
1.9 KiB
Java
111 lines
1.9 KiB
Java
class TestCtrlC
|
|
{
|
|
static void main(final String[] args) // first arg should be: 0 .. 5
|
|
{
|
|
final char c = args.length > 0 && args[0].length() > 0 ?
|
|
args[0].charAt(0) : '\0';
|
|
Runtime.getRuntime().addShutdownHook(new Thread()
|
|
{
|
|
public void run()
|
|
{
|
|
System.out.println("Shutdown hook!");
|
|
}
|
|
});
|
|
if (c == '4' || c == '5')
|
|
{
|
|
Thread t =
|
|
new Thread()
|
|
{
|
|
public void run()
|
|
{
|
|
try
|
|
{
|
|
for (;;)
|
|
{
|
|
System.out.println("Next 2!");
|
|
int ch;
|
|
if ((ch = System.in.read()) < 0)
|
|
{
|
|
System.out.println();
|
|
System.out.println("EOF 2!");
|
|
break;
|
|
}
|
|
if (ch == 'q')
|
|
break;
|
|
if (ch == 'e')
|
|
System.exit(1);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("Exc2: " + e);
|
|
}
|
|
System.out.println("End 2!");
|
|
}
|
|
};
|
|
t.setDaemon(args.length == 1);
|
|
t.start();
|
|
t =
|
|
new Thread()
|
|
{
|
|
public void run()
|
|
{
|
|
for (;;)
|
|
{
|
|
System.out.print(".");
|
|
System.out.flush();
|
|
try
|
|
{
|
|
Thread.sleep(500);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("Exc3: " + e);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
t.setDaemon(true);
|
|
t.start();
|
|
}
|
|
try
|
|
{
|
|
System.out.println("Loop!");
|
|
for (;;)
|
|
{
|
|
Thread.yield();
|
|
if (c == '1')
|
|
Thread.currentThread().stop();
|
|
if (c == '\0' || c == '0')
|
|
break;
|
|
try
|
|
{
|
|
if (c == '3' || c == '5')
|
|
{
|
|
int ch;
|
|
if ((ch = System.in.read()) < 0)
|
|
{
|
|
System.out.println();
|
|
System.out.println("EOF!");
|
|
break;
|
|
}
|
|
if (ch == 'Q')
|
|
break;
|
|
System.out.println("Next!");
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("Exc2: " + e);
|
|
}
|
|
}
|
|
}
|
|
catch (ThreadDeath e)
|
|
{
|
|
System.out.println("Death!");
|
|
throw e;
|
|
}
|
|
System.out.println("End!");
|
|
}
|
|
}
|