Java Timer 定时器执行定时任务(RCP启动进度条)

本文介绍了一个JavaWeb应用程序启动过程中的监测方法及显示进度对话框的技术实现。通过定时任务定期检查Web服务器状态,并使用进度监视对话框展示启动进度,确保用户能够及时了解应用启动情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public void loginBefore() {
try {
url = new URL(PATH_URL);
} catch (MalformedURLException e) {
return;
}
isStart = false;
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
check();
}
}, 0, 5*1000);// 5 sec
showProgressDialog();
}


private void check() {
try {
logger.info("check............");
BufferedReader reader = new BufferedReader(new InputStreamReader(
url.openStream()));
String str = reader.readLine();
if (isStart) {
return;
}
if (str.matches("Started")) {
logger.info("Web Server is started.");
isStart = true;
timer.cancel();//Terminate the timer thread
return;
}
} catch (Throwable t) {
return;
}
}

private void showProgressDialog() {
ProgressMonitorDialog progress = new ProgressMonitorDialog(null);
progress.setCancelable(true);
try {
progress.run(true, true, new IRunnableWithProgress() {
public void run(IProgressMonitor monitor)
throws InvocationTargetException {
monitor.beginTask("Procressing......",
IProgressMonitor.UNKNOWN);
while (true) {
if (isStart) {
break;
}
if (monitor.isCanceled()) {
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
PlatformUI.getWorkbench().close();
}
});
isStart = true;
break;
}
Display.getCurrent().readAndDispatch();
monitor.worked(1);
}
monitor.done();
}
});
} catch (InvocationTargetException e) {
return;
} catch (InterruptedException e) {
return;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值