1/*2 * Licensed to the Apache Software Foundation (ASF) under one3 * or more contributor license agreements. See the NOTICE file4 * distributed with this work for additional information5 * regarding copyright ownership. The ASF licenses this file6 * to you under the Apache License, Version 2.0 (the7 * "License"); you may not use this file except in compliance8 * with the License. You may obtain a copy of the License at9 *10 * http://www.apache.org/licenses/LICENSE-2.011 *12 * Unless required by applicable law or agreed to in writing, software13 * distributed under the License is distributed on an "AS IS" BASIS,14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15 * See the License for the specific language governing permissions and16 * limitations under the License.17 */1819package org.apache.giraph.time;
2021import java.util.Date;
2223/**24 * Implementation of Time that is thread-safe and should be used in25 * production.26 */27publicclassSystemTimeimplementsTime {
28/**29 * Single instance of this object30 */31privatestaticfinalSystemTime SINGLE_TIME = newSystemTime();
3233 @Override
34publiclong getMilliseconds() {
35return System.currentTimeMillis();
36 }
3738 @Override
39publiclong getMicroseconds() {
40return getNanoseconds() / NS_PER_US;
41 }
4243 @Override
44publiclong getNanoseconds() {
45return System.nanoTime();
46 }
4748 @Override
49publicint getSeconds() {
50return (int) (getMilliseconds() / MS_PER_SECOND);
51 }
5253 @Override
54public Date getCurrentDate() {
55returnnew Date();
56 }
5758 @Override
59publicvoid sleep(long milliseconds) throws InterruptedException {
60 Thread.sleep(milliseconds);
61 }
6263/**64 * Get an instance (shared) of this object65 *66 * @return Instance of this object67 */68publicstaticTime get() {
69return SINGLE_TIME;
70 }
71 }