日期:2014-05-18  浏览次数:20631 次

Java Timer定时器的问题。
本帖最后由 cxmessage 于 2013-08-10 13:34:17 编辑
如图所示:

public List<Articles> query(int indexone, int indextwo, String titleonetitle) {
String sqlstr = "SELECT articles.id,articles.title,MAX(clickcounts) AS clickcounts,articles.img FROM articles WHERE "
+ "forid IN(SELECT titletwo.`ID` FROM titletwo WHERE forid IN (SELECT id FROM titleone WHERE titletab=?)) GROUP BY clickcounts desc limit ?,?;";
mysqlcon = Mysqlcon.getInstacce();
Connection connection = null;
try {
connection = mysqlcon.getConnection();
} catch (SQLException e1) {
System.err.println("获取连接桥失败..");
e1.printStackTrace();
}
List<Articles> list = new ArrayList<>();
try {
ps = (PreparedStatement) connection.prepareStatement(sqlstr);
ps.setString(1, titleonetitle);
ps.setInt(2, indexone);
ps.setInt(3, indextwo);
ResultSet rs = (ResultSet) ps.executeQuery();
while (rs.next()) {
Articles articles = new Articles();
articles.setId(rs.getInt(1));
articles.setTitle(rs.getString(2));
articles.setClickcounts(rs.getInt(3));
articles.setImg(rs.getString(4));
list.add(articles);
}
timer = new Timer(true);
timer.schedule(new TimerTask() {
public void run() {
              这里会报错,说的是必须设置rs,connection为final类型
mysqlcon.free(rs, ps, connection);
}
}, 0, 5000);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
java timer 定时器 jdbc

------解决方案--------------------
你的问题不是timer定时器怎么使用的问题,而是需要了解 局部内部类的使用方式

局部内部类 
内部类定义在方法中成为局部内部类,只在局部有效。该类只为所在的方法块服务。 
局部内部类和成员内部类一样可以访问外围类的所有成员,但是不可以访问同在一个局部块的普通局部变量。如果要访问,此局部变量要被声明称final的。