我现在正在浏览一些不是我的代码。在代码中有一个带有以下代码的线程:
while (true)
{
Thread.sleep(int.MaxValue);
}
它还捕获 InterruptedException 并立即返回循环,因此循环甚至不能被中断。
有谁知道为什么这个线程会存在,目的是什么?
编辑:完整的代码,更多的上下文:
using IKVM.Attributes;
using java.lang;
using System;
using System.Runtime.CompilerServices;
namespace applicationNamespace
{
internal sealed class DedicatedServerSleepThread : Thread
{
internal DedicatedServer theDecitatedServer;
[MethodImpl(MethodImplOptions.NoInlining)]
internal DedicatedServerSleepThread(DedicatedServer dedicatedServer)
{
this.theDecitatedServer = dedicatedServer;
base.setDaemon(true);
this.start();
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override void run()
{
while (true)
{
try
{
while (true)
{
System.Threading.Thread.Sleep(int.MaxValue);
}
}
catch (System.Threading.ThreadInterruptedException)
{
}
}
}
static DedicatedServerSleepThread()
{
}
}
}
请注意,前面的代码使用了一些非标准库,因此小写的 sleep 是有效的。具体来说,它使用的是 ikvm 库(基于 java 标准库,用于将 java 程序交叉编译到 .net)
这是一个 java 服务器程序,我将其交叉编译为 .net 字节码,然后进行反编译。我不确定是否有人看到过出于任何原因专门用于睡觉的线程,如果有的话,原因是什么。ta.speot.is 给出了一个非常好的答案。