请教个在SERVLET中调用 getRuntime().exec(command) 的问题

xuguoxin 2005-11-22 02:36:18
我在SERVLET中通过getRuntime().exec(command)调用一个外部程序 该用来生成个性图片

主要代码:
public void service(HttpServletRequest request,
..........
command = "create new.jpg";
proc = Runtime.getRuntime().exec("cmd /c start "+command); int returnValue = proc.waitFor();
...........
//显示生成的图片

我需要 把程序生成的图片立即反馈给用户 比如 使用<img src="new.jpg"/>显示给用户
问题是“create new.jpg” 完成的时间无法确定 一般3秒内完成 特殊情况得 20秒以上
而下面的代码 是不会等 "create new.jpg"结束 后顺序执行 servlet 把COMMAND 丢给 操作系统后就立即执行下面的代码

我不可能也不想使用Thread.sleep()等待

我正考虑写一个线程 用较小得时间间隔判断 new.jpg 是否生成 可感觉方法很笨

我的问题是: 有什么好办法 让我立即知道"create new.jpg"执行完成 或者 如何能让
exec(command)功能 完成后再调用下面的代码

谢谢各位:)


...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuguoxin 2005-11-22
  • 打赏
  • 举报
回复
多谢 King_Style 的回复

这段代码需要 WHILE,break 配合才可以完成判断 考虑到图片可能永远无法建立 需要超时推出循环 而超时时段依赖于COMMAND的执行时间 这我是无法确定的

while(true)
{
if(f.exists() || outtime(3000s)){break)
}
//other code

现在正在试着 brower 段 用JS来刷新 获取生成的图片 clearTimeout 总有问题
crazycy 2005-11-22
  • 打赏
  • 举报
回复
学习
King_Style 2005-11-22
  • 打赏
  • 举报
回复
File f=new File(path+图片名)
if(f.exists()){
图片已经创建,执行下面的代码.......
}
于2024年4月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和文名,若无文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧