`
mwhgJava
  • 浏览: 97987 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

TimeSpan and ConcurrentTimeSpan

阅读更多
/**
 * TimeSpan is not synchronized.
 *
 * If multiple threads access a TimeSpan concurrently, it must be synchronized externally.
 *
 * If multiple threads access a TimeSpan concurrently, ConcurrentTimeSpan are usually recommended.
 *
 * @see ConcurrentTimeSpan
 *
 */
public class TimeSpan {

    private long start;

    public TimeSpan() {
        this(System.currentTimeMillis());
    }

    public TimeSpan(long start) {
        this.start = start;
    }

    public long getSpanAndResetStart() {
        return getSpanAndResetStart(System.currentTimeMillis());
    }

    public long getSpanAndResetStart(long current) {
        try {
            return current - start;
        } finally {
            start = current;
        }
    }

    public long getSpan() {
        return getSpan(System.currentTimeMillis());
    }

    public long getSpan(long current) {
        return current - start;
    }

    public long getStart() {
        return start;
    }

    public void setStart() {
        setStart(System.currentTimeMillis());
    }

    public void setStart(long start) {
        this.start = start;
    }

}


import java.util.concurrent.atomic.AtomicLong;

/**
 * ConcurrentTimeSpan are synchronized.
 *
 * @see TimeSpan
 *
 */
public class ConcurrentTimeSpan {

    private final AtomicLong start;

    public ConcurrentTimeSpan() {
        this(System.currentTimeMillis());
    }

    public ConcurrentTimeSpan(long start) {
        this.start = new AtomicLong(start);
    }

    public long getSpanAndResetStart() {
        return getSpanAndResetStart(System.currentTimeMillis());
    }

    public long getSpanAndResetStart(long current) {
        return current - start.getAndSet(current);
    }

    public long getSpan() {
        return getSpan(System.currentTimeMillis());
    }

    public long getSpan(long current) {
        return current - start.get();
    }

    public long getStart() {
        return start.get();
    }

    public void setStart() {
        setStart(System.currentTimeMillis());
    }

    public void setStart(long start) {
        this.start.set(start);
    }

}

分享到:
评论

相关推荐

    间隔时间TimeSpan

    ### 间隔时间 TimeSpan 在C#编程语言中,`TimeSpan` 类是一个非常重要的系统类,主要用于表示两个日期或时间之间的间隔。通过 `TimeSpan` 类,开发者可以轻松地进行时间间隔的计算、比较和操作。 #### TimeSpan ...

    详解C# TimeSpan 计算时间差(时间间隔)

    在C#编程中,`TimeSpan`结构是一个用于表示时间间隔的重要工具,它可以用来计算两个日期或时间点之间的时间差。`TimeSpan`类提供了丰富的属性和方法,使得开发者能够方便地进行各种时间操作。 首先,`TimeSpan`结构...

    ASP.NET中TimeSpan的用法实例解析

    本文实例讲述了ASP.NET中TimeSpan的用法,分享给大家供大家参考。具体如下: ASP.NET 中,两个时间相减,得到一个 TimeSpan 实例,TimeSpan 有一些属性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes...

    C#的TimeSpan案例详解 c#经典案例.pdf

    在C#编程语言中,`TimeSpan`是一个非常重要的结构,用于表示两个日期或时间之间的差值,即一个时间间隔。这个结构提供了多种方法和属性,使得开发者可以方便地处理和展示时间间隔。 首先,`TimeSpan`有四个主要的...

    C#使用TimeSpan时间计算的简单实现

    在C#编程中,`TimeSpan` 是一个非常重要的结构,用于表示两个日期或时间之间的差值。它可以用来处理时间间隔,比如计算时间差、执行定时任务等。本篇文章将详细探讨如何使用 `TimeSpan` 进行时间计算,并通过一个...

    timespan使用方法详解

    《TimeSpan使用方法详解》 TimeSpan类在.NET框架中是一个非常重要的类,它用于表示两个日期或时间之间的时间间隔,通常用来计算两个DateTime对象之间的差异。本文将深入探讨TimeSpan的使用方法,帮助你更好地理解和...

    C#程序设计-3期(KC008) KC008110100005-如何使用TimeSpan对象获取时间间隔.docx

    在C#编程中,`TimeSpan`对象是一个用于表示时间间隔或持续时间的类,它可以用来计算两个日期或时间之间的差值。`TimeSpan`结构提供了丰富的属性和方法,允许我们精确地处理时间间隔。在本篇内容中,我们将深入探讨...

    C#基于TimeSpan实现倒计时效果的方法

    本篇文章将详细讲解如何利用TimeSpan结构来实现倒计时功能,这对于C#开发者来说是一个非常实用的技能。 首先,TimeSpan是.NET框架中的一个类,用于表示两个日期或时间之间的差值,它包含了天数、小时数、分钟数、秒...

    Javascript日期差值显示库timespanjs.zip

    //输出:1个月1天10小时12分钟15秒,234毫秒未输出,因为baseUnit参数默认是:'s'Timespan.lang('en'); console.log(ts.humanize()); //输出:1 month,1 day,10 hours,12 minutes,15 seconds 测试用例 ...

    PowerShell中的TimeSpan时间差对象使用实例

    TimeSpan对象表示一个时间差,比如今天的10点10分,和明天的12点12分,就差1天2小时2分。这个“1天2小时2分”就是一个TimeSpan。这个东西有什么用呢?小编之前在做一个小东西的时候,需要评估一下两个不同的方法看...

    TimeSpan2:库将.NET TimeSpan结构扩展为可比较,可序列化和可转换,并支持本地化的字符串格式和解析

    该库将.NET TimeSpan结构扩展为可比较,可序列化和可转换,并支持本地化的字符串格式和解析。 共有三类公共注意事项: TimeSpan2是现有TimeSpan结构的包装,它增加了序列化,可比较性和可转换性。 它可以在使用...

    为WPF Masked TextBox创建double或TimeSpan Value TextBox的行为

    标题“为WPF Masked TextBox创建double或TimeSpan Value TextBox的行为”涉及到了一个解决方案,该方案允许开发者创建具有特定格式约束的文本框,用于输入double类型的数值或TimeSpan值。这种行为(Behavior)是一种...

    C#定时关机小工具源码2012523

    C#定时关机小工具源码 项目描述 ... AutoShutTimeSpan: a global variable of type TimeSpan that holds the difference between AutoShutDatTime and System.DateTime.Now. 欢迎感兴趣的用户下载学习。

    C# compare

    本文将深入探讨如何使用C#中的`TimeSpan`结构来计算两个时间点之间的差异,这对于理解和操作时间数据至关重要。 ### C#中的`TimeSpan`结构 `TimeSpan`结构在C#中用于表示时间间隔或持续时间,它可以精确到毫秒级别...

    C#时间差函数

    - 示例:`TimeSpan ts1 = new TimeSpan(1, 2, 3); TimeSpan ts2 = new TimeSpan(4, 5, 6); TimeSpan ts3 = ts1.Add(ts2);` 这里 `ts3` 将包含 `TimeSpan` 的值为 `05:07:09`(即 `5` 小时 `7` 分钟 `9` 秒)。 - **...

Global site tag (gtag.js) - Google Analytics