모두. 나는 RESTful 웹 서비스에 문제가있다. Java에서 RESTful 서비스를 호출하는 PHP 클라이언트가있다. 내 RESTful 서비스에서는 Post 쿼리 메서드를 사용하여 업데이트 쿼리를 실행하여 10000 개의 레코드가있는 테이블의 모든 행을 수정합니다. 나는 이것을하기 위해 쓰레드를 사용하고 싶다. 그렇게 할 수 있습니까? 제발 내가 자바에서 새로운 일종의 도와주세요. 감사.Java의 RESTful 웹 서비스에 스레드를 사용하십시오.
내 서비스 계층이 일을 해요 OK :
for(int i = 0; i < 10; i++)
{
startRow = i*1000;
finalRow = i*1000 + 1000;
Runnable process = new ProcessRecords(startRow , finalRow);
executor.execute(process);
}
// Wait until all threads are finish
while (!executor.isTerminated()) {
}
System.out.println("\n All threads finished");
그리고 업데이트 실행이 클래스 (ProcessRecords)를 호출하고 있습니다 : 내 데이터 계층 I에서 다음
public ProcessRecords (int start, int final)
{
startRow = start;
finalRow = final;
}
@Override
public void run(){
try {
ConsultUniversity consult = new ConsultUniversity();
consult.averangeGrade(startRow, finalRow);
} catch (Exception ex) {
Logger.getLogger(Procesos.class.getName()).log(Level.SEVERE, null, ex);
}
}
을 내 방법 "averangeGrade"내부에서 이렇게 해요 :
try {
conn = UniversityConection();//This is my conection
query = "SELECT * FROM grades LIMIT " + filaInicial + "," + filaFinal;
prepStatement = conn.prepareStatement(query);
rs = prepStatement.executeQuery(query);
rsmd = rs.getMetaData();
while(rs.next())
{
averange = (rs.getInt("nFirGrd") + rs.getInt("nSecGrd") +
rs.getInt("nThrGrd"))/3; //the averange of three grades
query = "UPDATE grades SET nFinGrd = ? WHERE cCodAlu = ?";
prepStatement = conn.prepareStatement(query);
prepStatement.setInt(1, averange);
prepStatement.setString(2, rs.getString("cCodAlu"));
prepStatement.executeUpdate();
System.out.println("Record " + rs.getString("cCodAlu") +
" modified");
}
conn.close(); //close connection
}
그런 다음 내 클라이언트를 실행할 때 내 서비스는 upda를 수행합니다. 50 행과 같은 맨 위 행에 대해 te를 실행 한 다음 모든 프로세스가 완료된 것처럼 메시지를 반환하고 이유를 모르겠습니다. 나는 모든 쓰레드가 끝날 때까지 기다리지 않고 있다고 생각하지만, 쓰레드는 그것을위한 코드이다 : S, 그렇다면 왜 이런 일이 일어나는가? 도와주세요. 고맙습니다.
더 구체적으로 말씀해주십시오 : (1) "쓰레드 사용"이란 정확히 무엇을 의미합니까? (2) 어떤 문제를 해결하려고합니까? – EJK
단순히 스레드를 사용해도 데이터베이스의 속도는 증가하지 않습니다. RESTful 호출이 테이블의 모든 행을 업데이트하는 경우 테이블이 한 번만 업데이트해야하는 외부 값을 참조하도록 데이터를 재구성해야한다. – psaxton
글쎄, 자바 웹 컨테이너는 이미 멀티 스레드입니다. 이 큰 업데이트를 실행하기 위해 비동기 작업을 실행하려고합니다. 문제를 더 잘 이해할 수 있도록 명확히 설명해 주시겠습니까? –