请问我这样让一个程序控制另一个程序运行会有问题吗?

小水晶 2009-02-20 08:35:44
两台机器,一台机器有个java程序,一直运行着,每半个小时轮旬一次,其间涉及很多数据库的操作。
另一台是web服务器,现在我们的目的是在web上设计一个页面,点击某个按钮,可以让那个java程序启动轮旬。

我的设计是这样的,在数据库中增加一个标志,为0或1,java程序如下

public void run()
{
.......
wait(一个静态对象, 30 * 60 * 1000);
}

再有个线程每10秒查询数据库1次,一旦发现那个标志为1,就notify启动轮旬。

而web程序就是将数据库中的标志更改状态。

不知道这样对程序的性能会有影响吗?
这种机制是否可行?“线程每10秒查询数据库1次,一旦发现那个标志为1,就notify启动轮旬。”长时间运行是否会给系统带来问题?

谢谢各位,欢迎大家提供其他可行设计
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csgdseed 2009-02-20
  • 打赏
  • 举报
回复
可以用,对性能影响很小
Daniel_Cao_ 2009-02-20
  • 打赏
  • 举报
回复

1、我认为这种操作是对数据库有一定影响,不过影响不大。因为每次只是读取一个标志位(这个标志位应该在一个单独的表中,这个读取对于数据库来说,小case)
这样实现起来应该是比较简单的

2、可以在web和这个java程序之间加一个socket连接。实现起来也比较简单。
3、就是考虑你的轮询程序的扩展性。是不是就只有这一种需求。如果是这样的话。 上面两种都可以。
如果web和和这个java程序后续还要有一些不同的操作,这样1方法,就是增加多个标志位,这种实现就不好了,让数据承担了太多的逻辑。
可以考虑用2中实现 连接协议(xml的,扩展性比较好) 再有就是可以有jms。 总之就是通过连接控制了。
个人想法

AgileGuest 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mailnumber2 的回复:]
这样应该没有问题,但是会给数据库带来压力,建议你直接点按钮的时候直接telnet或者ssh到另一台主机,在shell启动那个java轮询比较好
[/Quote]
楼上的实现方法更好一些。
mailnumber2 2009-02-20
  • 打赏
  • 举报
回复
这样应该没有问题,但是会给数据库带来压力,建议你直接点按钮的时候直接telnet或者ssh到另一台主机,在shell启动那个java轮询比较好
混沌君子 2009-02-20
  • 打赏
  • 举报
回复
建议:做一个监听器试试
dengrui1992 2009-02-20
  • 打赏
  • 举报
回复
hao

62,614

社区成员

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

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