当前位置: 技术问答>java相关
如何用java实现无限时间但间隔是5秒的循环程序,并可用q键退出循环和程序
来源: 互联网 发布时间:2017-04-27
本文导语: class loop { main { for ( 开始 ; 间隔5秒 ; 无限 ) { System.out.println("。。。。。。"); if ( 按下q键 ) { 退出循环 } //没有按下任何键或不是q键 else { 继...
class loop {
main {
for ( 开始 ; 间隔5秒 ; 无限 ) {
System.out.println("。。。。。。");
if ( 按下q键 ) {
退出循环
}
//没有按下任何键或不是q键
else {
继续循环
}
}
退出程序
}
}
main {
for ( 开始 ; 间隔5秒 ; 无限 ) {
System.out.println("。。。。。。");
if ( 按下q键 ) {
退出循环
}
//没有按下任何键或不是q键
else {
继续循环
}
}
退出程序
}
}
|
下面应该能够解决你的问题了:)
我想看看大家的解法,楼上的兄弟能不能说详细一点?
class Accept
{
public static void main( String[] args ){
Accept test = new Accept();
test.go();
}
public void go(){
Check singleChk = new Check();
singleChk.start();
try{
while(!Globle.QUIT_LOOP) {
System.out.println("programm is running...");
Thread.sleep(5*1000);
if(!Globle.QUIT_LOOP){
System.out.println("programm is dosomething");
}
}
}catch(Exception e){
System.out.println(e);
}
Globle.QUIT_THREAD = true; //通知?束?程
}
}import java.io.*;
public class Check extends Thread {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String ch="";
public synchronized void run() {
while (true && !Globle.QUIT_THREAD) {
try{
ch = br.readLine();
System.out.println(".....");
if (ch.equals("q")) {
Globle.QUIT_LOOP = true;
break ; //退出循?;
}
}catch(Exception e){
System.out.println(e);
}
}
}
}
public class Globle {
public static char JUST_CLICK=0;;
public static boolean QUIT_LOOP=false;
public static boolean QUIT_THREAD=false;
}
我想看看大家的解法,楼上的兄弟能不能说详细一点?
class Accept
{
public static void main( String[] args ){
Accept test = new Accept();
test.go();
}
public void go(){
Check singleChk = new Check();
singleChk.start();
try{
while(!Globle.QUIT_LOOP) {
System.out.println("programm is running...");
Thread.sleep(5*1000);
if(!Globle.QUIT_LOOP){
System.out.println("programm is dosomething");
}
}
}catch(Exception e){
System.out.println(e);
}
Globle.QUIT_THREAD = true; //通知?束?程
}
}import java.io.*;
public class Check extends Thread {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String ch="";
public synchronized void run() {
while (true && !Globle.QUIT_THREAD) {
try{
ch = br.readLine();
System.out.println(".....");
if (ch.equals("q")) {
Globle.QUIT_LOOP = true;
break ; //退出循?;
}
}catch(Exception e){
System.out.println(e);
}
}
}
}
public class Globle {
public static char JUST_CLICK=0;;
public static boolean QUIT_LOOP=false;
public static boolean QUIT_THREAD=false;
}
|
import java.io.*;
import java.util.*;
public class ThreadTest extends Thread
{
public void run() {
for(;;) {
System.out.println(new java.util.Date()); //可换成你要执行的任务。
try {
sleep(5*1000);
} catch(Exception e) {
}
}
}
public static void main(String[] args) {
char exit = ' ';
Thread t = new ThreadTest();
t.setDaemon(true);
t.start();
while(exit!='Q'&&exit!='q') {
try {
System.out.println("Press Q/q to exit:");
exit = (char)System.in.read();
} catch(IOException e){
}
}
System.out.println("Process finished.");
}
}
import java.util.*;
public class ThreadTest extends Thread
{
public void run() {
for(;;) {
System.out.println(new java.util.Date()); //可换成你要执行的任务。
try {
sleep(5*1000);
} catch(Exception e) {
}
}
}
public static void main(String[] args) {
char exit = ' ';
Thread t = new ThreadTest();
t.setDaemon(true);
t.start();
while(exit!='Q'&&exit!='q') {
try {
System.out.println("Press Q/q to exit:");
exit = (char)System.in.read();
} catch(IOException e){
}
}
System.out.println("Process finished.");
}
}
|
间隔运行可以使用
java.util.Timer
scheduleAtFixedRate(TimerTask task, long delay, long period)
至于如何接收q,我就不说了。
java.util.Timer
scheduleAtFixedRate(TimerTask task, long delay, long period)
至于如何接收q,我就不说了。
|
楼上的方法+放在线程中运行。
ok
ok
|
楼上的要是不从System.in读取就好了