[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12186] 「 Java 2 Standard Edition 5.0 Tiger 」を 読む会第 4 回 議事録



皆様、お疲れ様でした。
本日の議事録をupします。

根本和郎
------------------------------------------------------------

 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 = 管理する側

以上.