java有没有支持重新开始计时的计时器? 本帖最后由 baiyuxiong 于 2010-12-16 12:15:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Timer和TimerTask应该可以做得到。 还是用while 循环了 ,返回就立即循环调用 线程休眠时间,做成动态的就行了。(不过一般时间都不会这么准。所以如果服务器设置的是60秒的超时时间,客户端最好58、59秒左右就发一次请求) public void run() { try { while (true) { long current = System.currentTimeMillis(); long k = next_send_time - current; if (k > 0) { Thread.sleep(k); } else { //handshake() Thread.sleep(60 * 1000); } } } catch (InterruptedException ex) { } } public synchronized void refreshNextTime() { next_send_time = System.currentTimeMillis() + 60 * 1000; } private volatile long next_send_time;//下一次发起请求的日期 你意思是每有一个返回就调用一次while循环?那如果服务器端不停的返回数据,我就不停的调用while循环? 如果在SLEEP的60秒钟内,有SOCKET服务器发送过来数据的话,这个WHILE循环怎么处理?难道还让它sleep? 15秒的时候,有刷新。next = 15+60 =75休眠60秒结束,还会休眠(75-60=15)秒。 html中关于表格的一些名称 java 服务器时间校对 哪个Java数据库连接好 struts问题,待解决 有没有什么框架,可以根据PO自动生成增删改查 Frameset页面刷新问题 Hibernate中如何实用Oracle的sequence? Struts的基本思路、方法和主要观点是什么? 请教HQL问题 在linux的tomcat上运行报错 The web application [] registered the JDBC driver but failed 急求高手解决! EJB中用持久化的相关问题
(不过一般时间都不会这么准。所以如果服务器设置的是60秒的超时时间,客户端最好58、59秒左右就发一次请求) public void run() {
try {
while (true) {
long current = System.currentTimeMillis();
long k = next_send_time - current;
if (k > 0) {
Thread.sleep(k);
} else {
//handshake()
Thread.sleep(60 * 1000);
}
}
} catch (InterruptedException ex) {
}
} public synchronized void refreshNextTime() {
next_send_time = System.currentTimeMillis() + 60 * 1000;
}
private volatile long next_send_time;//下一次发起请求的日期
休眠60秒结束,还会休眠(75-60=15)秒。