如何让batch在第一次运行没有终止的情况下,第二次不能运行

kevin2000ab 2013-05-03 08:17:50
用纯JDK1.4写了一段纯JAVA的程序(BATCH)打包成postData.bat

在TASK LIST中指定每分钟运行一次
程序在第一次运行没有终止的情况 第二次启动会产生重复数据
如何摆脱这种情况(等待或者终止 都可以接受)

尝试了下 把程序入口定义成 synchronized
(main函数 调用 postData() 将 postData()定义成 synchronized)

但是DEBUG的时候 连续启动2次后 postData()还是可以被重复访问
是解决的思路错了吗
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei1710 2013-05-06
  • 打赏
  • 举报
回复
引用 5 楼 kevin2000ab 的回复:
[quote=引用 4 楼 fei1710 的回复:] 这是两个java进程啊,java有个FileLock类,这个锁是进程间,可以使用。
看了下API FileLock是个文件锁 不能起到想要的效果 最后通过 DB设立FLAG的方法对应了 唯一担心的是 程序中途崩溃的情况下 这个FLAG一直是立着的 接下来就没有办法自动继续运行了[/quote] 如果你会用,是有效果的
kevin2000ab 2013-05-06
  • 打赏
  • 举报
回复
引用 4 楼 fei1710 的回复:
这是两个java进程啊,java有个FileLock类,这个锁是进程间,可以使用。
看了下API FileLock是个文件锁 不能起到想要的效果 最后通过 DB设立FLAG的方法对应了 唯一担心的是 程序中途崩溃的情况下 这个FLAG一直是立着的 接下来就没有办法自动继续运行了
fei1710 2013-05-06
  • 打赏
  • 举报
回复
这是两个java进程啊,java有个FileLock类,这个锁是进程间,可以使用。
Bumpking 2013-05-06
  • 打赏
  • 举报
回复
引用 2 楼 kevin2000ab 的回复:
[quote=引用 1 楼 Bumpking 的回复:] 做一个外部文件,bat中队这个文件进行操作,当bat开始和结束的时候操作文件中的flg?
写文件或者写DB 确实是可以解决这个问题(实际也是这么做的) 多线程的情况下 是可以用synchronized搞定的 batch的话难道没有类似技术面解决的办法了吗[/quote] 我感觉,多次运行batch 相当于,初始化多个同样的application,你的synchronized锁上的貌似不会是同一个对象,因此加锁应该没用。 不一定对,帮顶一下吧。
kevin2000ab 2013-05-06
  • 打赏
  • 举报
回复
引用 1 楼 Bumpking 的回复:
做一个外部文件,bat中队这个文件进行操作,当bat开始和结束的时候操作文件中的flg?
写文件或者写DB 确实是可以解决这个问题(实际也是这么做的) 多线程的情况下 是可以用synchronized搞定的 batch的话难道没有类似技术面解决的办法了吗
Bumpking 2013-05-03
  • 打赏
  • 举报
回复
做一个外部文件,bat中队这个文件进行操作,当bat开始和结束的时候操作文件中的flg?

62,614

社区成员

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

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