1. 書いてみる
// よくある何とかHolder
var numHolder = function(initNum) {
this.out = java.lang.System.out;
this.num = initNum;
// 加算と減算
this.incNum = function() {
for (var i = 0; i < 10; i++) {
this.out.print(" inc:" + this.num++);
}
}
this.decNum = function() {
for (var i = 0; i < 10; i++) {
this.out.print(" dec:" + this.num--);
}
}
// sync()を使って同期関数を用意する
this.incNumSync = sync(this.incNum);
this.decNumSync = sync(this.decNum);
};
// Holder一個だけ作っておく
var theHolder = new numHolder(0);
// 別スレッドで、ひたすら加算する
var runner = new java.lang.Runnable() {
holder: theHolder,
run: function() {
this.holder.incNum();
// *sync()を使う場合*
//this.holder.incNumSync();
}
};
new java.lang.Thread(runner).start();
// メインスレッドで、ひたすら減算する
theHolder.decNum();
// *sync()を使う場合*
//theHolder.decNumSync();
2. sync()を使わない場合の動作js> load("synctest.js");
dec:0 dec:-1 dec:-2 dec:-3 dec:-4 dec:-5 dec:-6 inc:-7 in
:-3 inc:-2 inc:-1 inc:0 inc:1 inc:2 dec:3 dec:2 dec:1js>
3. sync()を使う場合の動作js> load("synctest.js");
dec:0 dec:-1 dec:-2 dec:-3 dec:-4 dec:-5 dec:-6 dec:-7 dec:-8
c:-9 inc:-8 inc:-7 inc:-6 inc:-5 inc:-4 inc:-3 inc:-2 inc:-1js>
0 件のコメント:
コメントを投稿