Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA';s System.currentTimeMillis()或C#和#x27;s环境。滴答数?_C#_Java - Fatal编程技术网

JAVA';s System.currentTimeMillis()或C#和#x27;s环境。滴答数?

JAVA';s System.currentTimeMillis()或C#和#x27;s环境。滴答数?,c#,java,C#,Java,嘿,最近,我一直在试图找到好的方法来消除线程休眠(以防它受到干扰或者你的计算机出现延迟等) 那么,哪种方法总体上“性能更好” C#的JAVA System.currentTimeMillis()方法: System.currentTimeMillis()正在使用中: 和C#的环境。滴答数: private void Run() { double lastUpdate = Environment.TickCount; while (isRunnin

嘿,最近,我一直在试图找到好的方法来消除线程休眠(以防它受到干扰或者你的计算机出现延迟等)

那么,哪种方法总体上“性能更好”

C#的JAVA System.currentTimeMillis()方法:

System.currentTimeMillis()正在使用中:

和C#的环境。滴答数:

    private void Run()
    {
        double lastUpdate = Environment.TickCount;

        while (isRunning)
        {
            if (lastUpdate + 600 < Environment.TickCount)
            {
                lastUpdate = Environment.TickCount;
                // bla bla bla...
            }

            try
            {
                Thread.Sleep(100);
            }
            catch (Exception ex)
            {
                Jolt.GetLog().WriteException(ex);
            }
        }
    }
private void Run()
{
double lastUpdate=Environment.TickCount;
同时(正在运行)
{
如果(lastUpdate+600

任何帮助都将不胜感激。否则,如果这是一个坏主意,请您提供一个更好的方法来做到这一点。

滴答声当然有更好的性能


在这个用例中,不需要计算当前时间的开销。您只关心经过的时间,因此在epoch是1970还是进程的开始时不会有任何区别。

使用TickCount方法具有更好的性能,原因如下:

  • 它是一个整数,不是一个多字节的数据结构
  • 它是直接可用的,不需要进行各种计算
就性能而言,您不应该使用双重类型。要测量100秒的跨度,int就足够了。注意,TickCount在24天后从正值转为负值,所以如果使用double,则在该时间之后使用TickCount将不再有效;如果使用int,则应将其写成

if (Environment.TickCount-lastUpdate > 600)

谢谢伙伴,这可能是我需要的答案。小评论:如果你认为TigkCalt是一个未签名的int,那么它不会滚动到48天。
    private void Run()
    {
        double lastUpdate = Environment.TickCount;

        while (isRunning)
        {
            if (lastUpdate + 600 < Environment.TickCount)
            {
                lastUpdate = Environment.TickCount;
                // bla bla bla...
            }

            try
            {
                Thread.Sleep(100);
            }
            catch (Exception ex)
            {
                Jolt.GetLog().WriteException(ex);
            }
        }
    }
if (Environment.TickCount-lastUpdate > 600)