java中如何控制时间间隔?

比如说我写坦克大战,只允许在发射炮弹后一定时间间隔后才能再次发射炮弹,要怎么控制?请教各位高手,我还是菜鸟,希望能解释得详细一点,谢谢~... 比如说我写坦克大战,只允许在发射炮弹后一定时间间隔后才能再次发射炮弹,要怎么控制?
请教各位高手,我还是菜鸟,希望能解释得详细一点,谢谢~
展开
 我来答
samismiling
2015-06-24 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下:

1、基础知识
java.util.Timer
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步。
java.util.TimerTask
由 Timer 安排为一次执行或重复执行的任务。

2、示例代码
该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日志中。
首先创建一个需要定时执行的任务类,这个任务类需要继承TimerTask,然后重写run()方法,run()方法体中的代码就是定时需要执行的操作,在本demo中,就是获取连接池中当前可用连接数,并输出到日志中,具体实现代码如下:
public class TaskAvailableConnectNumber extends TimerTask {
private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
private ConnectionPool pool=ConnectionPool.getInstance();
@Override
publicvoid run() {
log.debug("当前连接池中可用连接数"+pool.getAvailableConnectNumber());
}
}
下面定义一个监听器,负责在应用服务器启动时打开定时器,监听器需要实现ServletContextListener接口,并重写其中的contextInitialized()和contextDestroyed()方法,代码如下:
public class OnLineListener implements ServletContextListener{
private Logger log = Logger.getLogger(OnLineListener.class);
Timer timer = null;
//在应用服务器启动时,会执行该方法
publicvoid contextInitialized(ServletContextEvent arg0) {
//创建一个定时器,用于安排需要定时执行的任务。
timer = new Timer();
//为定时器安排需要定时执行的任务,该任务就是前面创建的任务类TaskAvailableConnectNumber,并指定该任务每30分钟执行一次。
timer.schedule(new TaskAvailableConnectNumber(), 0, 30*60*1000);
log.debug("启动定时器");
}
//应用服务器关闭时,会执行该方法,完成关闭定时器的操作。
public void contextDestroyed(ServletContextEvent arg0) {
if(timer!=null){
timer.cancel();//关闭定时器
log.debug("-----定时器销毁--------");
}
}
}
监听器要想正常运行,需要在web.xml文件中进行配置,配置信息如下:
<!-- 监听器配置开始 -->
<listener>
<listener-class>
cn.sdfi.listen.OnLineListener
</listener-class>
</listener>
<!-- 监听器配置结束 -->
以上步骤完成后,一个简单的定时器就算开发完成了。
紫色_情调
2011-05-10 · TA获得超过170个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:157万
展开全部
例如发射炮弹的类class Paodan,有个静态变量为time,发射炮弹时,记录当前时间.
下次在调用发射炮弹的方法时,判断当前时间和time的时间间隔是否符合你的要求,不符合就不发射

大致就是这样了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序员杨007
2011-05-19 · 超过17用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:52万
展开全部
不是那样的,你要等发射出的炮弹碰到物体会消失,消失后就可以了 ,这个控制可以分为两类:
1、用坐标来控制炮弹是否已经出了定义的界面
2、中间碰到东西会触发事件,用这个触发事件来控制可以发射下一颗炮弹。
这是很简单的语法和逻辑了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pegevun
2011-05-14 · TA获得超过691个赞
知道答主
回答量:683
采纳率:0%
帮助的人:0
展开全部
时间=replace(formatdatetime(rs("addtime"),2),"-","/")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chnchnmng168
2011-05-13 · TA获得超过217个赞
知道答主
回答量:207
采纳率:0%
帮助的人:92.2万
展开全部
启动线程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式