読書会(Java 2 Standard Edition 5.0 Tiger)第4回議事録

[ 戻る ]


 2005年12月17日 土曜日
 「 Java 2 Standard Edition 5.0 Tiger 」を読む会第4回 読書会議事録
  高橋(徹) 高橋(智) 小棚木 奥 岩室 村山 遠藤 和田
  門脇 吉本 金井 濱口 石黒 根本(書記)

■9.6 メモリモデル より (p131)
■9.6.1 ts.start()... ts.join() で呼んだ先のコードの完了と、
 呼んだ側のmainスレッドは完了の順序性は保証されていない。
 2CPUマシンでなら現象の再現可能らしい。 再現テストは宿題。

class ThreadSynchronization extends Thread {
  private int x;
  public ThreadSynchronization(int x) { this.x = x; }
  public void run() {
    System.out.println("run: x = " + x);
    x = 2;
  }
  public int getX() { return x; }
 public static void main(String[] args) throws InterruptedException {
    ThreadSynchronization ts = new ThreadSynchronization(1);
    ts.start();
    ts.join();
    System.out.println("main: x = " + ts.getX());
  }
}
■volatileの変数の読み書きをマルチスレッドでやると、どの程度遅くなるのか? 宿

■9.6.2 final宣言されたフィールド
 final宣言されていればTigerではフィールドの普遍性が保証されるようになった。
 1.4 までは実は保証されていなかった。
 オブジェクトクラス生成時はフィールドに0がセットされ、次に初期値がセット
 されるので、参照の食い違いが起きる。 
 コンストラクターが終わらないと、周りからは参照はできないので、その問題は起
きない。
■9.7 型によるプログラミング
 toString(boolean)の用途は?
   プロパティファイルにbooleanを書くとき 
   表のフィールドの一つがbooleanの時、そこでもソート可能
   JTableはエクセルの代わりに使おうとすると大変
 
■9.7.2 loestOneBit(int i) これは何に使うのか
     bug parade かrequest for enhancement を要調査
  reverseBytes(inti ) は endian変換の為のものの気がする。
 「ハッカーのたのしみ」副読本として、もともとの書き方を参考にすると良い。
  NaN =Not a Number = -∞, ∞
   IEEE754 の表記で 仮数部 指数部の組で表記可能。
  getDirectionarity(char ch) とは、文字を右から書くか、左から書くかのこと 
   日本語を入れて試してみましょう。
 
  isMirrored(char ch) 日本語の 「」や『』のような対応括弧も
  検出可能か試してみましょう。
  αの全角半角表記問題のように何か落とし穴ないのか?
  Unicode 4.0は最大4byteになる。
  基本多言語プレーンとは UCS-2で表現可能な空間のこと

■9.7.5 Classクラス
 public boolean isSynthetic()
  合成クラス(Synthetic class)とは、何か?
  単純なinner classは合成とは答えない。         宿題
  enumの継承クラスでもtrueとはならない。
  getName()とgetCanonicalName() とは何か

■9.7.6 Fieldクラス
 public boolean isSynthetic()はコバリアントなfieldであるどうかを確認する。

■9.7.7 Mehodクラス
  getGenericReturnType() の返す実際の型パラメータは、Typeクラスを返す。

■9.8 ガーベッジコリクションとメモリ
 
■9.9 ドキュメンテーションコメント
 「直列化された形式」とは? そういうjavadocがある。

  パッケージドキュメント
  package.html --> package-info.java となったことでAnnotationの
  説明に使用できるようになった

■9.10.3 printfメソッド
 printfメソッドと formantメソッド の違いは? 同じ事ができるように見える。
 printfは毎回フォーマットが掛かるので遅い。どの程度遅いのか       宿

 
■9.10.4 オブジェクトのシリアライズ
 readObject は古いversionのjdkで生成したシリアライズオブジェクトも
 読めなくてはならないという強い縛りがあるので、サポートが大変。
 
■9.11 コレクション
 O(1)とは?
 O(1) = order 1 コレクション数が増えても、
     個々へのアクセス速度は変わらないという意味
 O(n) = linklist のようなものはn個あれば、その分増加する
 
 PriorityQueueクラスはスレッドセーフではないのでPriorityBlockingQueue
 などを使用してスレッドセーフなアクセスをしなくてはならない。
 
 "Java Threading third edition" にこのあたりの記述は載っている。
 
■9.12.4 MathクラスとStrictMathクラス
  StrictMathクラスは、異なったマシン同士で浮動小数点のをキーとした
  暗号化ファイルの受け渡しなどには、MathではなくStrictMathで計算結果の
  精度の一致を図りたいときに使う。 らしい 、   宿題

■9.13.1 Systemクラス
  currentMilsec() よりはnanoTime()の方が正確にはなりうる。
 
■9.13.4 java.langの新たなサブパッケージ
 javax.management = JMXの本体
 java.lang.managemet = 管理する側

以上

[ 戻る ]