代码:
import java.util.Timer;
import java.util.TimerTask;public class Test3 {
public static void main(String[] args) {
Timer t1 = new Timer();
t1.schedule(new MyTask(), 0, 5*1000);
} static class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("娃哈哈");
Test4 test4 = new Test4();
test4.dodo();
}
}
}-------------------------------------------------import java.util.Timer;
import java.util.TimerTask;
public class Test4 {
public void dodo(){
Timer t2 = new Timer();
t2.schedule(new MyJob(), 0, 1000);
}
class MyJob extends TimerTask{ @Override
public void run() {
System.out.println("==========================");
}
}
}
问题:test3 中的 timertask 每次去执行时,都会在test4中new出新的 timer ,这样导致 test4 中的timer 越来越多;
如何让test3中的timer重复运行时,都把上次在test4中new的timer 都失效 ? 保证最后的输出结果是娃哈哈
====================================
====================================
====================================
====================================
====================================
娃哈哈
====================================
====================================
====================================
====================================
====================================
娃哈哈
====================================
====================================
====================================
====================================
====================================...........
import java.util.Timer;
import java.util.TimerTask;public class Test3 {
public static void main(String[] args) {
Timer t1 = new Timer();
t1.schedule(new MyTask(), 0, 5*1000);
} static class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("娃哈哈");
Test4 test4 = new Test4();
test4.dodo();
}
}
}-------------------------------------------------import java.util.Timer;
import java.util.TimerTask;
public class Test4 {
public void dodo(){
Timer t2 = new Timer();
t2.schedule(new MyJob(), 0, 1000);
}
class MyJob extends TimerTask{ @Override
public void run() {
System.out.println("==========================");
}
}
}
问题:test3 中的 timertask 每次去执行时,都会在test4中new出新的 timer ,这样导致 test4 中的timer 越来越多;
如何让test3中的timer重复运行时,都把上次在test4中new的timer 都失效 ? 保证最后的输出结果是娃哈哈
====================================
====================================
====================================
====================================
====================================
娃哈哈
====================================
====================================
====================================
====================================
====================================
娃哈哈
====================================
====================================
====================================
====================================
====================================...........
import java.util.TimerTask;public class Test3 {
public static void main(String[] args) {
Timer t1 = new Timer();
t1.schedule(new MyTask(), 0, 5*1000);
Test4 test4 = new Test4();
test4.dodo();
}static class MyTask extends TimerTask {
@Override
public void run() {System.out.println("娃哈哈");}
}
}
大哥,你这个只是蒙蔽了眼睛,我最后要的结果不只是向输出结果那么简单,我必须要在run方法里执行test4.dodo(),所以你这行不通! 如果只是为了显示结果那样,我何必用timer啊!?
import java.util.Timer;
import java.util.TimerTask;public class Test3 {
public static void main(String[] args) {
Timer t1 = new Timer();
MyTask t = new MyTask();
t1.schedule(t, 0, 5 * 1000);
} static class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("娃哈哈");
if(Test4.test4 == null){
Test4.test4 = new Test4();
Test4.test4.dodo();
}
}
}
}
//以下是test4import java.util.Timer;
import java.util.TimerTask;public class Test4 {
public static Test4 test4 = null;
public static Test4 getTest4(){
return test4;
}
public void dodo() {
Timer t2 = new Timer();
t2.schedule(new MyJob(), 0, 1000);
} class MyJob extends TimerTask { @Override
public void run() {
System.out.println("==========================");
} }
}
import java.util.TimerTask;public class Test3 {
public static void main(String[] args) {
Timer t1 = new Timer();
t1.schedule(new MyTask(), 0, 5*1000);
}static class MyTask extends TimerTask {
Test4 test4 = new Test4();
@Override
public void run() {
test4.cancel();
System.out.println("娃哈哈");
test4.dodo();
}
}
}import java.util.Timer;
import java.util.TimerTask;
public class Test4 {
Timer t2 = new Timer();
MyJob mj = new MyJob();public void dodo(){
mj = new MyJob();
t2.schedule(mj, 0, 1000);
}
public void cancel()
{
mj.cancel();
}
class MyJob extends TimerTask{@Override
public void run() {
System.out.println("==========================");
}}
}