多线程基础二(线程状态 及前后台进程)

 1. 暂停线程

  Thread.Sleep(1000);

2.等待线程

thread.Join();

这两个的状态都是 WaitSleepJoin

3.终止线程

 thread.Abort();

这个状态是 AbortRequested ==》 Stopped

4.检查线程状态

t1.ThreadState

[ComVisible(true)]
    [Flags]
    public enum ThreadState
    {
        Running = 0,  //2. thread.start()
        StopRequested = 1,
        SuspendRequested = 2,
        Background = 4,
        Unstarted = 8,  // 1. Thread thread = new Thread(Common.PrintNumbersWithStatus);
        Stopped = 16,  //4. 当线程指向的方法执行完时候
        WaitSleepJoin = 32, //3.  Thread.Sleep or thread.join()
        Suspended = 64,
        AbortRequested = 128, // 4.thread.Abort();
    Aborted = 256 //5. thread.Abort(); }

前台与后台线程

默认情况下,显式创建的线程都是前台线程(foreground threads)。只要有一个前台线程在运行,程序就可以保持存活,而后台线程(background threads)并不能保持程序存活。当一个程序中所有前台线程停止运行时,仍在运行的所有后台线程会被强制终止。

后台线程可以使用 join 来等待结束

原文地址:https://www.cnblogs.com/haigui-zx/p/14944196.html