mysql:13101
From: TOMTOM <TOMTOM <tomf1@xxxxxxxxxx>>
Date: Mon, 19 Jun 2006 09:27:31 +0900
Subject: [mysql 13101] 排他制御????
こんにちは、
教えて欲しいことがあるのですが、
例えば、二台のパソコンから、mysqlにデータを
追加している時、一方のパソコンが、追加している時は、
他方は、待機して、追加が終わったとき、
待機していた方が、追加更新を始めるようにしたいのです。
これって、排他制御というのですか。???
パソコンが一台しか、無いので、
javaで、スレット処理を利用して、あたかも、二台から、アクセス
しているようなコードにして、実行したのですが、
二つのスレットが交互にアクセスしているみたいで、
どうの様にしたら、期待した、
アクセスになるか、以下のプログラムを
どのように、改造したらいいのか、教えてください。
環境 win xp
jdk 1.5
mysql 5.0
connector 3.1.11
*******************************************
package threadsql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author
*/
class tsql extends Thread {
Connection con=null;
Statement stat = null;
String data=null;
public tsql(String url,String user,String pass,String data) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url,user,pass);
stat = con.createStatement();
con.setAutoCommit(false);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
this.data=data;
}
public void run() {
String sql = "insert into ff values('"+data+"')";
for(int i =0;i<100;i++){
try {
int k = stat.executeUpdate(sql);
System.out.println(data+" "+ i);
Thread.sleep(100);
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
try {
con.commit();
stat.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public class threadsql {
/** Creates a new instance of threadsql */
public threadsql() {
String url="jdbc:mysql://localhost/test";
String user = "root";
String pass = "*********";
String data ="user1";
tsql t1 = new tsql(url,user,pass,data);
String url1="jdbc:mysql://prim/test";
String user1 = "user2";
String pass1 = "*********";
String data1 ="user2";
tsql t2 = new tsql(url1,user1,pass1,data1);
t1.start();
t2.start();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new threadsql();
// TODO code application logic here
}
}
*****************************************************
実行結果、
user1 0
user2 0
user1 1
user2 1
user1 2
user2 2
user1 3
user2 3
--------
これを、以下の様な、実行結果にしたいのです。
user1 0
user1 1
user1 2
user1 3
--------
--------
user2 0
user2 1
user2 2
user2 3
--------
--------
よろしくお願いいたします。
-> 13101 2006-06-19 09:27 [TOMTOM <tomf1@xxxxxx] 排他制御???? 13102 2006-06-19 09:46 ┗[Tetsuro IKEDA <te.ik] 13103 2006-06-19 14:21 ┗[TOMTOM <tomf1@xxxxxx] Re: : 排他制御????