WallTimeRate.java
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2012 Google Inc.
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
00005  * use this file except in compliance with the License. You may obtain a copy of
00006  * the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
00013  * License for the specific language governing permissions and limitations under
00014  * the License.
00015  */
00016 
00017 package org.ros.concurrent;
00018 
00019 
00023 public class WallTimeRate implements Rate {
00024 
00025   private final long delay;
00026 
00027   private long time;
00028 
00029   public WallTimeRate(int hz) {
00030     delay = 1000 / hz;
00031     time = 0;
00032   }
00033 
00034   @Override
00035   public void sleep() {
00036     long delta = System.currentTimeMillis() - time;
00037     while (delta < delay) {
00038       try {
00039         Thread.sleep(delay - delta);
00040       } catch (InterruptedException e) {
00041         break;
00042       }
00043       delta = System.currentTimeMillis() - time;
00044     }
00045     time = System.currentTimeMillis();
00046   }
00047 }


rosjava_core
Author(s):
autogenerated on Wed Aug 26 2015 16:06:49