我需要同步一个mysql查询,所以只有一个用户可以同时访问指定的部分。我试过synchronized(){}
了,但这不起作用。用户可以同时访问该方法。这是一个使用tomcat6的jsp web应用程序。我需要这个,因为当太多用户同时运行查询时,网络服务器会崩溃。
String sql = "SELECT * FROM products;"
ResultSet rs;
//This block should be synchronized
Statement s = con.createStatement();
rs = s.excecuteQuery(sql);
while (rs.next()) {
// do some stuff..
}
谢谢你的帮助。
编辑:我如何尝试同步
public class connect {
public static String URL = "url";
public static String USER = "root";
public static String PASSWORD = "password";
private Object lock = new Object();
public void getData() {
Connection con;
try {
con = DriverManager.getConnection(URL, USER, PASSWORD);
String sql = "SELECT * FROM products;";
ResultSet rs;
//This block should be synchronized
synchronized(lock) {
Statement s = con.createStatement();
rs = s.executeQuery(sql);
while (rs.next()) {
// do some stuff..
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我认为该对象lock
应该存储在服务器上。但是这样做的正确方法是什么?