ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

例で考えるJavaプログラミング (7)

2012-11-08 12:48:42 | 暮らし
progJ.pdf

記事一覧

                    同期制御

progJ.pdf に [#46-47] を追加しました.P46.java は QueS の「synchronized」を除去したときと結果を比較してください.
※ 同期制御によって時刻が1秒ずれていることを確認できます.
 
補足:(1) P46.java
import myLib.*;
class QueS extends Que {
  QueS(){super();}
  public synchronized void show(){
    try{
      Thread.sleep(1500);
    }catch(InterruptedException e){}
    super.show();
  }
}
class NowS extends Now{
  QueS p;
  NowS(int k, QueS q){super(k); p = q;}
  public void run(){
    p.show(); super.run();
  }
}
public class Main {
  public static void main(String[] args){
    QueS q = new QueS(); q.insert("abc");
    NowS n1 = new NowS(2, q); n1.start();
    NowS n2 = new NowS(2, q); n2.start();
  }
}
(2) P47.java
import myLib.*;
class NowW extends Now{
  NowW(int k){super(k);}
  public synchronized void run(){
    cnt = 3; super.run(); notify();
  }
}
public class Main {
  public static void main(String[] args) {
    NowW n = new NowW(); n.start();
    synchronized(n){
      try{n.wait();}catch(Exception e){ }
    }
  }
}