虽然调试通过,可是总觉得有点问题。
代码:
package test;import java.util.Timer;
import java.util.TimerTask;public class LightTest
{
private final Timer timer = new Timer();
private final int second;
private final int color; public LightTest( int second, int color )
{
this.second = second;
this.color = color;
}
public void DisplayLight( int color )
{
switch( color )
{
case 1:
{
System.out.println( "红灯亮" );
break;
}
case 2:
{
System.out.println( "黄灯亮" );
break;
}
case 3:
{
System.out.println( "绿灯亮" );
break;
}
default:
{
System.out.println( "输入参数错误!" );
break;
}
}
}
public void start()
{
DisplayLight( color );
timer.schedule( new TimerTask()
{
public void run()
{
timer.cancel();
}
}, second*1000 );
}
public static void main(String[] args)
{
while ( true )
{
LightTest green = new LightTest( 14, 3 );
green.start();
LightTest yellow = new LightTest( 6, 2 );
yellow.start();
LightTest red = new LightTest( 20, 1 );
red.start();
}
}
}运行时发现在控制台显示的时间并不是我定义的时间间隔。而是时快时慢。困惑~~
请各位高手指点!谢谢!
代码:
package test;import java.util.Timer;
import java.util.TimerTask;public class LightTest
{
private final Timer timer = new Timer();
private final int second;
private final int color; public LightTest( int second, int color )
{
this.second = second;
this.color = color;
}
public void DisplayLight( int color )
{
switch( color )
{
case 1:
{
System.out.println( "红灯亮" );
break;
}
case 2:
{
System.out.println( "黄灯亮" );
break;
}
case 3:
{
System.out.println( "绿灯亮" );
break;
}
default:
{
System.out.println( "输入参数错误!" );
break;
}
}
}
public void start()
{
DisplayLight( color );
timer.schedule( new TimerTask()
{
public void run()
{
timer.cancel();
}
}, second*1000 );
}
public static void main(String[] args)
{
while ( true )
{
LightTest green = new LightTest( 14, 3 );
green.start();
LightTest yellow = new LightTest( 6, 2 );
yellow.start();
LightTest red = new LightTest( 20, 1 );
red.start();
}
}
}运行时发现在控制台显示的时间并不是我定义的时间间隔。而是时快时慢。困惑~~
请各位高手指点!谢谢!
{
public void run()
{
timer.cancel();
}
}, second*1000 );}
中用的是timer.shedule(new TimerTask(),senconds*1000);改为timer.shedule(new TimerTask(),0,seconds*1000);就对了.在括号里的后俩参数分别代表的什么时候开始和延迟多久.
import java.util.Timer;
import java.util.TimerTask;public class LightTest{
private final Timer timer = new Timer();
private final int second;
private final int color; public LightTest( int second, int color )
{
this.second = second;
this.color = color;
}
public void DisplayLight( int color )
{
switch( color )
{
case 1:
{
System.out.println( "红灯亮" );
break;
}
case 2:
{
System.out.println( "黄灯亮" );
break;
}
case 3:
{
System.out.println( "绿灯亮" );
break;
}
default:
{
System.out.println( "输入参数错误!" );
break;
}
}
}
public void start()
{
DisplayLight( color );
timer.schedule( new TimerTask()
{
public void run()
{
timer.cancel();
}
}, second*1000 );
}
public static void main(String[] args)
{
while ( true )
{
LightTest green = new LightTest( 14, 3 );
green.start();
try {
Thread.sleep(green.second*1000);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
LightTest yellow = new LightTest( 6, 2 );
yellow.start();
try {
System.out.println(new Date());
Thread.sleep(yellow.second*1000);
System.out.println(new Date());
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
LightTest red = new LightTest( 20, 1 );
red.start();
try {
Thread.sleep(red.second*1000);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
import java.util.TimerTask;public class LightTest{
static long start_time;
private final Timer timer = new Timer(); private final int second; private final int color; public LightTest(int second, int color) {
this.second = second;
this.color = color;
} public void DisplayLight(int color) {
switch (color) {
case 1: {
System.out.println("红灯亮");
break;
}
case 2: {
System.out.println("黄灯亮");
break;
}
case 3: {
System.out.println("绿灯亮");
break;
}
default: {
System.out.println("输入参数错误!");
break;
}
}
} public void start() {
//DisplayLight(color);
timer.schedule(new TimerTask(){
public void run(){
DisplayLight(color);
System.out.println((System.currentTimeMillis() - start_time) + "毫秒\r\n");
}
}, 0, second * 1000);
} public static void main(String[] args) {
start_time = System.currentTimeMillis();
//while (true) {
LightTest green = new LightTest(14, 3);
green.start();
LightTest yellow = new LightTest(6, 2);
yellow.start();
LightTest red = new LightTest(20, 1);
red.start(); //}*/
/*Timer tr = new Timer();
tr.schedule(new TimerTask() {
public void run() {
System.out.println(100);
}
}, 0, 1000);*/
}
}