質問するログイン新規登録

質問編集履歴

4

お礼

2017/05/14 07:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -19,4 +19,7 @@
19
19
  // データベースの更新 - 複数のSQLを実行する。
20
20
  // データベースを commit/rollbackする。
21
21
  }
22
- ```
22
+ ```
23
+ データベースセッション(トランザクション)に複数スレッドが相乗りしてもよいのか?が、質問の趣旨だったということに気づきました。質問の仕方が悪かったのでしょうか、ステレオタイプな答えしか返ってこなかったので、やる気をなくしました。
24
+
25
+ 少し視野を広げてConcurrencyについて自分で調べることします。皆様ありがとうございました。

3

Connecttionを訂正

2017/05/14 07:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
15
15
 
16
16
  ```Java
17
- Connecttion conn = ...
17
+ Connection conn = ...
18
18
  synchronized(conn) {
19
19
  // データベースの更新 - 複数のSQLを実行する。
20
20
  // データベースを commit/rollbackする。

2

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

2017/05/12 21:33

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,4 +9,14 @@
9
9
  2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
10
10
 
11
11
  私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
12
- 答えを募集します。
12
+ 答えを募集します。
13
+
14
+ スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
15
+
16
+ ```Java
17
+ Connecttion conn = ...
18
+ synchronized(conn) {
19
+ // データベースの更新 - 複数のSQLを実行する。
20
+ // データベースを commit/rollbackする。
21
+ }
22
+ ```

1

JDBCの仕様を追加

2017/05/12 03:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,9 @@
1
1
  「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
2
2
 
3
+ まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。
4
+
5
+ では、スレッドセーフだとして、マルチスレッドで使ってよいのか?
6
+
3
7
  autocimmtとの関連があると思います。
4
8
  1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
5
9
  2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。