私は変数に時間の連続的に変化する値(ミリ秒単位)を格納し、それを他の時間値と比較していくつかのタスクを実行したいと思います。どうやってするの? 私のプログラムがコンパイルされると、変数に格納されるミリ秒の値はプログラム全体で同じになり、決して変更されないという問題があります。すべての条件が同じ時間と私はいくつかの仕事をしたい時間が比較される場合は、決して来ることはありません。私は時計の時間の変化と時間値の比較をしたい。私は助けに非常に感謝します。私は変数の時間の連続的に変化する値を保存し、その後いくつかのタスクを行うためにそれを他の時間と比較したい。それを行う方法
ここで私は(私はコンストラクタでそれを格納されている)継続時間を取得するために使用していたコードです:これは将来のタイミングである(
Thread clock = new Thread(){
@Override
public void run() {
while(true){
Calendar cal = Calendar.getInstance();
millisAt_ONU = cal.getTimeInMillis();
}
};
clock.start();
と、私は時間とそれを比較するには、このコードを使用する - 私の条件は先となります実行する:
if(millisAt_ONU == receivedGATE_time8){
//receivedGATE_time8 is the time which will come
try {
socOnu.sendReportHP(report_ONU_8_HP);
socOnu.sendReportLP(report_ONU_8_LP);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("--------------------------------\n");
System.out.println("Sent REPORT for ONU-8!");
}
'millisAt_ONU'はどのように宣言されていますか?あるスレッド内でその値を設定し、別のスレッドで値を読み込んでいるので、おそらく 'volatile 'でなければなりません。 –
'millisAt_ONU == receivedGATE_time8'が' true'である可能性が非常に小さいことを認識していますか? – talex
'Calendar.getInstance()。getTimeInMillis()'は大量の操作です。 'System.currentTimeMillis()'を使うのがより簡単で高速です – talex