그래서 자바로 서버 애플리케이션을 만들고 있는데, 데이터베이스 요청이 이벤트 구동되도록 비 블로킹 (non-blocking)으로하고 싶습니다.Java로 비 블로킹 다중 쓰레드 MySQL
지금까지 나는이있어 나는이 다른 스레드에서 MySQL의 연결을 생성하는 것입니다하고 있어요 방법 :
package makeza.server.persistence;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;
import makeza.server.WorldServer;
public final class MySQLNonblock extends Thread {
public Connection connection = null;
private Logger log = WorldServer.log;
private String host, port, user, pass, database;
@Override
public void run(){
init();
}
public MySQLNonblock(String hst, String prt, String usr, String pas, String dbase){
this.setDaemon(true);
this.setName("DatabaseThread");
this.host = hst;
this.port = prt;
this.user = usr;
this.pass = pas;
this.database = dbase;
}
public void init(){
log.info("Connecting to database...");
try {
connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" +
database + "?" + "user=" + user + "&password=" + pass);
log.info("Connected to database");
} catch (SQLException e) {
log.severe("Couldn't connect to database at " + host + ":" + port);
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode());
System.exit(1);
//e.printStackTrace();
}
}
}
내가 다른 클래스에서 스레드를 시작하고는 MySQL의 연결 서버, 다음 스레드가 종료됩니다.
스레드를 한 번 지속시킨 다음 실행 방법을 종료하면 mysql 연결을 사용할 수 있습니까?
해당 스레드에 메시지 펌프를 원하십니까? – SLaks