Java尝试每10秒对数据进行一次采样

时间:2014-11-19 03:11:18

标签: java

我想在10秒钟内从API调用中获取数据。现在我调用api,更新数据并等待10秒,但这是10秒加上代码执行所需的时间。有没有办法弄清楚暂停多少,以便暂停10秒 - 采样数据所需的时间????

代码:

do{
  // sample data
    for(int i=0; i<cMarkets.mTitle.length;  i++ )
        {
            mBitTrex.market=i;
            cTicker prices = new cTicker(); 
            prices=mBitTrex.GetCurSales();

            String FileName = "graph"+cMarkets.mTitle[i];
            FileName+=".txt";
            FileWriter fileWritter = new FileWriter( FileName,true);
            BufferedWriter bufferWritter = new BufferedWriter(fileWritter);

            String say;
            say=Double.toString(prices.last)+","+Double.toString(prices.bid)+","+Double.toString(prices.ask);

            bufferWritter.write(say );
            bufferWritter.write("\r" );
            bufferWritter.write("\n" );
            System.out.println(say);


            bufferWritter.close();
        }
// wait for 10 seconds then sample data again
// how can I make it so the puse is 10 seconds-the time it took to sample the fdata??
        Thread.sleep(10000);
        } while(System.in.available()==0);

2 个答案:

答案 0 :(得分:1)

java.util.Timer使用scheduleAtFixedRate()方法。

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        // your logic here
    }
}, 0, 10000);

javadoc有点迟钝,但基本上固定速率调度的工作方式就像一个常量的自动收报机,它会在每个滴答声中执行你的任务。

答案 1 :(得分:0)

System.currentTimeMillis()会在几毫秒内为您提供时间。代码启动时的绝对值减去它结束时的绝对值是运行代码所用的毫秒数。

示例:

int time1=System.currentTimeMillis();

// run some code...

int millisecondsToCompleteCode=System.currentTimeMillis()-time1;