timer是多线程中的一种吗?
答案:2 悬赏:60 手机版
解决时间 2021-02-26 14:58
- 提问者网友:像風在裏
- 2021-02-26 03:43
如题
最佳答案
- 五星知识达人网友:动情书生
- 2021-02-26 04:18
timer和timeTask一起使用,timeTask已经把runable实现了,timer的schedule方法又把start方法封装了,所以,只要把这两个类一起用好就可以方便的实现多线程。
这是我的实例:
package corejava.d12.thread;
import java.util.*;
import java.io.*;
//使用runable或者thread肯定可以,但是没有timer和timerTask方便
public class MyTask extends TimerTask {
String index;
Timer myTimer = new Timer();
public MyTask(String index) {
this.index = index;
}
public void run() {
System.out.println(index);
}
public static void main(String args[]) {
MyTask myTask1 = new MyTask("First task");
myTask1.doScedule(0,3);
MyTask myTask2 = new MyTask("Second task");
myTask2.doScedule(0,1);
try{
Thread.sleep(6000);
}
catch(InterruptedException e){
}
myTask1.end();
myTask2.end();//程序结束时用cancel()结束Timer
}
public void doScedule(int delay, int internal) {
// 利用timer.schedule方法,这里肯定把start方法封装了
myTimer.schedule(this, delay * 1000, internal * 1000);
}
public void end(){
myTimer.cancel();
}
}
这是我的实例:
package corejava.d12.thread;
import java.util.*;
import java.io.*;
//使用runable或者thread肯定可以,但是没有timer和timerTask方便
public class MyTask extends TimerTask {
String index;
Timer myTimer = new Timer();
public MyTask(String index) {
this.index = index;
}
public void run() {
System.out.println(index);
}
public static void main(String args[]) {
MyTask myTask1 = new MyTask("First task");
myTask1.doScedule(0,3);
MyTask myTask2 = new MyTask("Second task");
myTask2.doScedule(0,1);
try{
Thread.sleep(6000);
}
catch(InterruptedException e){
}
myTask1.end();
myTask2.end();//程序结束时用cancel()结束Timer
}
public void doScedule(int delay, int internal) {
// 利用timer.schedule方法,这里肯定把start方法封装了
myTimer.schedule(this, delay * 1000, internal * 1000);
}
public void end(){
myTimer.cancel();
}
}
全部回答
- 1楼网友:枭雄戏美人
- 2021-02-26 05:20
每个timer,就开启一个线程了。
参数请看api文档
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯