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){ }
}
}
}