質問編集履歴

4 お礼

退会済みユーザー

退会済みユーザー

2017/05/14 16:32  投稿

「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか
「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。
では、スレッドセーフだとして、マルチスレッドで使ってよいのか?
autocimmtとの関連があると思います。
1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
答えを募集します。
スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
```Java
Connection conn = ...
synchronized(conn) {
   // データベースの更新 - 複数のSQLを実行する。
   // データベースを commit/rollbackする。
}
```
```
データベースセッション(トランザクション)に複数スレッドが相乗りしてもよいのか?が、質問の趣旨だったということに気づきました。質問の仕方が悪かったのでしょうか、ステレオタイプな答えしか返ってこなかったので、やる気をなくしました。
少し視野を広げてConcurrencyについて自分で調べることします。皆様ありがとうございました。
  • Java

    20514 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

3 Connecttionを訂正

退会済みユーザー

退会済みユーザー

2017/05/13 06:33  投稿

「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか
「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。
では、スレッドセーフだとして、マルチスレッドで使ってよいのか?
autocimmtとの関連があると思います。
1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
答えを募集します。
スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
```Java
Connecttion conn = ...
Connection conn = ...
synchronized(conn) {
   // データベースの更新 - 複数のSQLを実行する。
   // データベースを commit/rollbackする。
}
```
  • Java

    20514 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2 スレッドセーフとトランザクションについて

退会済みユーザー

退会済みユーザー

2017/05/12 12:32  投稿

「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか
「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。
では、スレッドセーフだとして、マルチスレッドで使ってよいのか?
autocimmtとの関連があると思います。
1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
答えを募集します。
答えを募集します。
スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
```Java
Connecttion conn = ...
synchronized(conn) {
   // データベースの更新 - 複数のSQLを実行する。
   // データベースを commit/rollbackする。
}
```
  • Java

    20514 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1 JDBCの仕様を追加

退会済みユーザー

退会済みユーザー

2017/05/12 08:33  投稿

「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか
「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
 
まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。  
 
では、スレッドセーフだとして、マルチスレッドで使ってよいのか?  
autocimmtとの関連があると思います。
1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
答えを募集します。
  • Java

    20514 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る