为什么线程 2 不可用?
Why Thread 2 not available?
在下面的小控制台应用程序中,我正在打印主线程 ID 和其他 5 个线程,它正在打印 1、3、4、5、6、7,但不打印 2。线程 2 是否不可用,这是怎么回事生成了多少?
static void Main(string[] args)
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Enumerable.Range(0, 5).ToList().ForEach(f =>
{
new Thread(() =>
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
}).Start();
});
Console.ReadLine();
}
Thread 1
Thread 3
Thread 4
Thread 5
Thread 6
Thread 7
Id=2 的线程是垃圾收集器线程。您可以通过 运行 finalizer:
检查它的 Id
class Test
{
~Test()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
var test = new Test();
test = null;
GC.Collect();
}
打印:
1
2
在下面的小控制台应用程序中,我正在打印主线程 ID 和其他 5 个线程,它正在打印 1、3、4、5、6、7,但不打印 2。线程 2 是否不可用,这是怎么回事生成了多少?
static void Main(string[] args)
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Enumerable.Range(0, 5).ToList().ForEach(f =>
{
new Thread(() =>
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
}).Start();
});
Console.ReadLine();
}
Thread 1 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7
Id=2 的线程是垃圾收集器线程。您可以通过 运行 finalizer:
检查它的 Idclass Test
{
~Test()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
var test = new Test();
test = null;
GC.Collect();
}
打印:
1
2