C#中的线程(Thread)

(一)学习之前首先弄明白两个问题

               1.线程,进程,应用程序域的关系?

              线程是进程的基本执行单元,在进程的入口,执行的第一个线程,是主线程。主线程都是以Main()方法作为入口的。

               进程包含运行程序所需的资源;可以理解为运行程序的基本边界。

               应用程序域是一个程序运行的逻辑区域。

               总结:进程是一个应用程序的边界,包含了其运行所需的资源。一个进程可以包含多个应用程序域。

                         同一时刻,线程只会包含在同一个应用程序域中。

            2.关于多线程的问题?

            对于单核CPU,在单位时间(time slice)内,只有单个线程在运行;运行顺序取决于线程的优先级。

            对于单位时间内未运行完的线程,状态信息将保存在本地存储其中,以便下次继续运行。

            线程之间以极快的频率切换运行,造成多线程的假象。

 

(二)C#中关于线程的主要方法和属性

            实例化线程对象: Thread thread=new Thread(方法名);

             Thread.IsBackground 属性。后台线程不会防止应用程序的进程被终止。当前台线程都结束了的时候,整个程序也就结束了,即使后台线程还没结束。

      线程安全:使用排他锁lock  当两个线程争夺一个锁的时候,一个线程等待,或者说被阻止到那个锁变的可用。

      .CurrentThread.Name = "main";//命名线程

            .Start() 方法启动线程。

            .Abort()方法终止线程。

            .Suspend()挂起线程。              

            .Resume()恢复线程。

            .Join()阻止原线程执行,知道新线程执行完。

//.join()使用代码说明

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Test
{
    class TestThread
    {
        private static void ThreadFuncOne()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(Thread.CurrentThread.Name + "   i =  " + i);
            }
            Console.WriteLine(Thread.CurrentThread.Name + " has finished");
        }

        static void Main(string[] args)
        {
            Thread.CurrentThread.Name = "MainThread";

            Thread newThread = new Thread(new ThreadStart(TestThread.ThreadFuncOne));
            newThread.Name = "NewThread";

            for (int j = 0; j < 20; j++)
            {
                if (j == 10)
                {
                    newThread.Start();
                    newThread.Join();//阻塞主线程,可以将其屏蔽看看效果
                }
                else
                {
                    Console.WriteLine(Thread.CurrentThread.Name + "   j =  " + j);
                }
            }
            Console.Read();
        }
    }
}
其他的属性:













  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值