Java如何开发一个简易的任务提醒小程序
技术百科
P粉602998670
发布时间:2025-10-25
浏览: 次 答案:该程序通过Scanner接收任务名和延迟时间,使用Timer与TimerTask实现延时提醒,任务信息存于List中;每创建一个任务即调度执行,到时输出提醒并标记为已触发,输入quit后退出循环但等待所有提醒完成。
开发一个简易的任务提醒小程序,可以通过 Java 的基础功能实现定时提醒和任务管理。核心思路是使用 Java 的 Scanner 获取用户输入,用 Timer 和 TimerTask 实现延时提醒,任务信息可存储在内存集合中。下面是一个简单但完整的实现方案。
1. 定义任务模型(Task 类)
每个提醒任务包含基本信息:任务名称、提醒时间(延迟秒数)、是否已触发。
class Task {
private String name;
private long delay; // 延迟时间(毫秒)
private boolean triggered;
public Task(String name, long delay) {
this.name = name;
this.delay =
delay;
this.triggered = false;
}
public String getName() {
return name;
}
public long getDelay() {
return delay;
}
public boolean isTriggered() {
return triggered;
}
public void setTriggered(boolean triggered) {
this.triggered = triggered;
}}
2. 使用 Timer 实现定时提醒
Java 的 Timer 可以安排任务在未来某个时间点执行。TimerTask 是具体要执行的动作。
import java.util.Timer; import java.util.TimerTask;// 提醒任务执行体 class ReminderTask extends TimerTask { private Task task;
public ReminderTask(Task task) { this.task = task; } @Override public void run() { System.out.println("? 提醒:" + task.getName()); task.setTriggered(true); }}
3. 主程序:添加任务与调度
主类负责接收用户输入,创建任务并安排提醒。
import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Timer;public class SimpleReminder { private List
tasks = new ArrayList<>(); private Timer timer = new Timer(); private Scanner scanner = new Scanner(System.in); public void start() { System.out.println("? 简易任务提醒程序启动!"); while (true) { System.out.print("\n请输入任务名称(输入 quit 退出): "); String name = scanner.nextLine(); if ("quit".equalsIgnoreCase(name)) { break; } System.out.print("请输入提醒延迟时间(秒): "); String delayStr = scanner.nextLine(); long delay; try { delay = Long.parseLong(delayStr) * 1000; // 转为毫秒 } catch (NumberFormatException e) { System.out.println("⚠️ 输入无效,任务取消。"); continue; } Task task = new Task(name, delay); tasks.add(task); // 安排提醒 timer.schedule(new ReminderTask(task), delay); System.out.println("✅ 任务已设置:" + name + ",将在 " + (delay/1000) + " 秒后提醒。"); } System.out.println("? 程序结束,所有任务已提交。"); // 注意:程序不会立即退出,会等待所有提醒完成 } public static void main(String[] args) { new SimpleReminder().start(); }}
4. 运行效果示例
运行程序后交互如下:
? 简易任务提醒程序启动!请输入任务名称(输入 quit 退出): 写报告 请输入提醒延迟时间(秒): 5 ✅ 任务已设置:写报告,将在 5 秒后提醒。
请输入任务名称(输入 quit 退出): 开会 请输入提醒延迟时间(秒): 10 ✅ 任务已设置:开会,将在 10 秒后提醒。
请输入任务名称(输入 quit 退出): quit ? 程序结束,所有任务已提交。 ? 提醒:写报告 ? 提醒:开会
基本上就这些。这个小程序适合学习 Java 多线程和定时任务的基础逻辑。后续可以扩展功能,比如支持具体时间提醒、持久化任务、图形界面等。不复杂但容易忽略的是关闭资源或处理异常输入,实际使用中建议增强健壮性。
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11任务栏天气怎么关闭 Win11隐藏天气小
- 如何在Golang中实现RPC异步返回_Golan
- c++如何实现一个高性能的环形队列(Ring Bu
- Go 中 defer 语句在 goroutine
- php接口返回数据乱码怎么办_php接口调试编码问
- c++怎么处理多线程死锁_c++ lock_gua
- Windows10电脑怎么查看硬盘通电时间_Win
- Python lxml的etree和Element
- Windows10如何更改日期格式_Win10区域
- 如何在Golang中使用encoding/gob序
- Drupal 中 HTML 链接被双重转义导致渲染
- c++ namespace命名空间用法_c++避免
- 手机php文件怎么变成mp4_安卓苹果打开php转
- Win11怎么关闭资讯和兴趣_Windows11任
- Windows怎样关闭Edge新标签页广告_Win
- php在Linux怎么部署_LNMP环境搭建PHP
- Windows笔记本无法进入睡眠模式怎么办?(电源
- Win11怎么设置屏保时间_调整Win11屏幕保护
- Ajax提交表单PHP怎么接收_处理Ajax发送的
- c++中如何计算坐标系中两点间距离_c++勾股定理
- Win11怎么更改电脑名称_Windows 11修
- Win11麦克风没声音怎么设置_Win11麦克风权
- Windows10如何更改计算机工作组_Win10
- Windows10电脑怎么设置防火墙出站规则_Wi
- Go语言中slice追加操作的底层共享机制详解
- 如何使用Golang实现基本类型比较_Golang
- Django 测试数据库表缺失与字段未创建问题的完
- 如何在Golang中写入XML文件_生成符合规范的
- php订单日志怎么导出excel_php导出订单日
- 如何使用Golang操作指针变量_Golang解引
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- Python面向对象实战讲解_类与设计模式深入理解
- mac本地php环境如何开启curl_curl扩展
- Win11文件扩展名怎么显示 Win11查看文件后
- c++怎么实现大文件的分块读写_c++ 文件指针s
- Win11怎样安装微信开发者工具_Win11安装开
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- Win11如何更改任务栏颜色 Win11自定义任务
- 为什么Go需要go mod文件_Go go mod
- 如何在Golang中操作嵌套切片指针_Golang
- php文件怎么变mp4保存_php输出视频流保存为
- Win11怎么开启专注模式_Windows11时钟
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- Win11色盲模式怎么开_Win11屏幕颜色滤镜设
- Windows10怎样设置家长控制_Windows
- Python邮件系统自动化教程_批量发送解析与模板
- Win11怎么检查TPM2.0模块_Windows
- Win10如何卸载自带Edge_Win10彻底卸载
- php转mp4怎么保留字幕_php处理带字幕视频转
- Python技术债务管理_长期维护解析【教程】

delay;
this.triggered = false;
}
public String getName() {
return name;
}
public long getDelay() {
return delay;
}
public boolean isTriggered() {
return triggered;
}
public void setTriggered(boolean triggered) {
this.triggered = triggered;
}
QQ客服