解決すべき厄介な問題があります。メソッド呼び出しの前と直後にSystem.currentTimeMillis()を使用します。これは、これら2つのステートメント間の経過時間を測定する必要があるためです。
waitingTime = System.currentTimeMillis(); //starts calculating time
bridge.getIn(direction); // tries to enter the bridge
waitingTime = System.currentTimeMillis() - waitingTime ;// time elapsed
私の懸念は、プログラムを実行するたびに異なる結果が得られることです。
私はこれを手に入れます(これは完璧です):
Generated cars going north: 0
Generated cars going south: 2
Waiting time for every single car:
==============================================================
A0/South:109ms
A1/South:0ms
==============================================================
Mean waiting time southbound cars : 54ms
それから数秒後、プログラムを再度実行すると、次のようになります(これは間違っています)。
Generated cars going north: 0
Generated cars going south: 2
Waiting time for every single car:
==============================================================
A0/South:0ms
A1/South:94ms
==============================================================
Mean waiting time southbound cars : 47ms
すべての車の待ち時間が100msを下回ってはならないため、この出力は間違っていると思います。
currentTimeMillis関数に基づく時間計算に実際に影響するものは何ですか?
なぜ異なる結果が得られるのですか?
不思議に思うかもしれません:入力は毎回同じですか?はいと思います。入力パラメータ
は常に同じですが(両方の例)、プログラムはRandomクラスを使用して
与えられたスレッド数。
それが原因ですか?
プログラムに関するいくつかの詳細:
北から南(逆)に向かう車の束は、2車線の道路に沿って移動します。しばらくすると、彼らは橋に到着します。橋は片道のみで、容量に限りがあります。車が橋を通過するのに100msかかります。交通事故は許されません。
どうもありがとう。