タグ

ブックマーク / tech-blog.tsukaby.com (2)

  • JavaのレースコンディションをCollectionで実演して学んでみる

    レースコンディション=競合状態 個人的な見解ですが、学術分野以外ではあまり使われない言葉です。意味も結構広いですし。 今回はこのレースコンディション、スレッドセーフがテーマです。実際にスレッドセーフでないメソッドを利用して問題が発生する様子を見てみます。 スレッドセーフ Javaでスレッドセーフと言えばAPIドキュメントを見ているとよく目に留まるアレが思いつきます。例えばArrayListのJavadocに以下の記述があります。 Note that this implementation is not synchronized. この実装は同期化されません。 この文に続く説明を見ると分かりますが、複数スレッドでアクセスして、1スレッドでも変更を伴う操作をするとまずいようです。これはスレッドセーフではありません。逆に複数スレッドを意識して正しく設計・実装されたものはスレッドセーフです。例えば

    gologo13
    gologo13 2016/06/26
    Collections.synchronizedList
  • MyBatis GeneratorのExampleクラスなど解説

    MyBatis Generatorを使うと、MyBatisを利用する時に必要な煩雑な作業(SQL記述、XML作成、Entityクラス作成など)を自動化してくれます。 このMyBatis Generatorですが、デフォルトで****Exampleというクラスまで作成されるようになっています。少し使ってみると、「ああ、and条件とかを表すためのクラスなのね」と分かるのですが、情報不足で詳しいことが分かりません。 勿論公式にExample Class Usage Notesという情報はありますが、英語だし・・・というわけで使い方を調査・解説します。 テーブル まずは検証用に適当なテーブルとビューを作成します。 /* Create Tables */ -- 生産者 CREATE TABLE PRODUCER ( PRODUCER_ID BIGINT UNSIGNED NOT NULL, PROD

  • 1