java线程循环延时
时间: 2023-10-11 18:13:41 浏览: 99
在Java中,可以使用Timer和TimerTask来实现线程的循环延时。
首先,创建一个继承自TimerTask的任务类,该类需要实现run方法,在run方法中编写具体的任务逻辑。比如:
```java
public class ScheduleTask extends TimerTask {
@Override
public void run() {
System.out.println("执行任务" + new Date());
}
}
```
然后,在主程序中创建Timer对象,并使用schedule方法进行任务的延时调度。例如:
```java
public class Schedule {
public static void main(String[] args) {
Timer t = new Timer();
ScheduleTask task = new ScheduleTask();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse("2021-01-18 16:35:55");
t.schedule(task, date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们创建了一个Timer对象t,并将任务task以及延时执行的时间date传递给了t的schedule方法,该方法将会在指定的时间执行任务。
需要注意的是,默认情况下,Timer对象会创建一个非守护线程来进行延时任务的调度。如果希望在执行完调度后能够顺利结束线程,可以将Timer对象的构造函数中的第二个参数设置为true,即将其设置为守护线程。例如:
```java
Timer t = new Timer(true);
```
这样,在执行完所有的延时任务后,程序将会自动结束线程。
综上所述,以上是实现Java线程循环延时的一种方式,通过Timer和TimerTask来进行任务的调度。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Java 多线程系列(7) —— 线程的延时调度](https://blog.csdn.net/qq_38219153/article/details/112797291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文