当前位置: 首页 > news >正文

网站开发要学什么语言关键词排名的排名优化

网站开发要学什么语言,关键词排名的排名优化,求网站2021在线观看,梵克雅宝四叶草项链寓意文章目录 1 使用线程意义2 C#线程开启的四种方式2.1 异步委托开启线程2.2 通过Thread类开启线程2.3 通过线程池开启线程2.4 通过任务Task开启线程 3 前台线程和后台线程简述3.1 前台线程3.2 后台线程 4 简述Thread和Task开启线程的区别4.1 Thread效果展示4.2 Task效果展示4.3 区…

文章目录

  • 1 使用线程意义
  • 2 C#线程开启的四种方式
    • 2.1 异步委托开启线程
    • 2.2 通过Thread类开启线程
    • 2.3 通过线程池开启线程
    • 2.4 通过任务Task开启线程
  • 3 前台线程和后台线程简述
    • 3.1 前台线程
    • 3.2 后台线程
  • 4 简述Thread和Task开启线程的区别
    • 4.1 Thread效果展示
    • 4.2 Task效果展示
    • 4.3 区别说明

1 使用线程意义

在软件开发的过程中会很频繁的用到线程(Thread),在线程使用的过程中总是能出现“这样”或者“那样”的问题。线程被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果应用程序涉及到复杂的和耗时的操作,设置不同的线程执行路径往往是有益的,让每个线程执行特定的工作。使用线程不仅能节省 CPU 周期的浪费,同时也会提高应用程序的效率。

               **话不多说开始 上 干 货 !!!**

2 C#线程开启的四种方式

2.1 异步委托开启线程

//线程池可以看做容纳线程的容器;一个应用程序最多只能有一个线程池;ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池; 每排入一个工作函数,就相当于请求创建一个线程;
//线程池的作用:
//1、线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
//2、如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止
public static void Thread_3(string[] args)
{ThreadPool.QueueUserWorkItem(new WaitCallback(TestThreadPool), new string[] { "hjh" });Console.ReadKey();
}
public static void TestThreadPool(object state)
{string[] arry = state as string[];//传过来的参数值int workerThreads = 0;int CompletionPortThreads = 0;ThreadPool.GetMaxThreads(out workerThreads, out CompletionPortThreads);Console.WriteLine(DateTime.Now.ToString() + "---" + arry[0] + "--workerThreads=" + workerThreads + "--CompletionPortThreads" + CompletionPortThreads);
}

2.2 通过Thread类开启线程


private void Thread_2()
{Thread  t1 = new Thread(SetInfo1);t1.Start();
}private void SetInfo1()
{Console.WriteLine("奇数为" + i);
}

2.3 通过线程池开启线程

#region 3.通过线程池开启线程
//线程池可以看做容纳线程的容器;一个应用程序最多只能有一个线程池;ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池; 每排入一个工作函数,就相当于请求创建一个线程;
//线程池的作用:
//1、线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
//2、如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止
public static void Thread_3(string[] args)
{ThreadPool.QueueUserWorkItem(new WaitCallback(TestThreadPool), new string[] { "hjh" });Console.ReadKey();
}
public static void TestThreadPool(object state)
{string[] arry = state as string[];//传过来的参数值int workerThreads = 0;int CompletionPortThreads = 0;ThreadPool.GetMaxThreads(out workerThreads, out CompletionPortThreads);Console.WriteLine(DateTime.Now.ToString() + "---" + arry[0] + "--workerThreads=" + workerThreads + "--CompletionPortThreads" + CompletionPortThreads);
}

2.4 通过任务Task开启线程

public static void Thread_4(string[] args)
{Task task = new Task(DownLoadFile_My);task.Start();Console.ReadKey();
}
static void DownLoadFile_My()
{Console.WriteLine("开始下载...线程ID:" + Thread.CurrentThread.ManagedThreadId);Thread.Sleep(500);//模拟耗时的操作Console.WriteLine("下载完成!");
}

3 前台线程和后台线程简述

我们关闭一个应用程序,但是进程在资源管理器中依然存在,就是由于存在前台线程未关闭导致的。可以设置前台线程修改为后台线程(设置Thread.IsBackground 属性)。

不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。

应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。

3.1 前台线程

  1. 应用程序必须在所有前台线程处理完毕后方可退出;
  2. 前台线程一般处理等待时间较长的任务;
  3. 应用程序的主线程以及使用Thread开启的线程都默认为前台线程。

3.2 后台线程

  1. 应用程序退出时不用考虑后台线程是否已经运行完毕,直接退出进程;
  2. 一般用后台线程去处理等待时间较短的任务;
  3. 通过异步委托、线程池(ThreadPool.QueueUserWorkItem())和Task开启的线程都默认为后台线程;

4 简述Thread和Task开启线程的区别

4.1 Thread效果展示

 StringBuilder text = new StringBuilder();new Thread(() =>{for (int i = 0; i < 5; i++){new Thread(() =>{var threadId = Thread.CurrentThread.ManagedThreadId;text.AppendLine(threadId.ToString());}).Start();Thread.Sleep(1000);}MessageBox.Show(text.ToString(),"打印线程ID");}).Start();

在这里插入图片描述

4.2 Task效果展示

StringBuilder text = new StringBuilder();new Task(() =>
{for (int i = 0; i < 5; i++){new Task(() =>{var threadId = Thread.CurrentThread.ManagedThreadId;text.AppendLine(threadId.ToString());}).Start();Thread.Sleep(1000);}MessageBox.Show(text.ToString(),"打印线程ID");
}).Start();

在这里插入图片描述

4.3 区别说明

从3.1和3.2中我们看到这两种方式开启线程后,线程的ID是有明显的不同的。
其实Task 是基于 Thread 的,是比较高层级的封装,Task 最终还是需要 Thread 来执行,使用Thread 开启的线程默认使用前台线程,而Task 默认使用后台线程。

http://www.hkea.cn/news/816725/

相关文章:

  • 苏州网站建设网站seo优化的方法
  • 设计网装修seo顾问服
  • 网站ip拦截免费网站搭建平台
  • 深圳企业网站建设公司快速申请免费个人网站
  • 唯品会 一家专门做特卖的网站沈阳seo按天计费
  • 聊城手机网站建设郑州seo服务技术
  • 个人定做衣服店江门seo推广公司
  • 网站开发与网站建设山东济南seo整站优化费用
  • 香港疫情最新消息今天深圳seo教程
  • 维护一个网站难吗免费发布外链
  • 南安市网站建设成都今天重大新闻事件
  • 网站后台补丁如何做软文有哪几种类型
  • 网站建设的费用包括哪些内容资讯门户类网站有哪些
  • 一站式服务图片制作网页的基本步骤
  • 个人网站建设网站网络网站推广
  • asp做的药店网站模板北京百度快照推广公司
  • 网站建设泉州效率网络seo的优化策略有哪些
  • 页网站无锡网站制作推广
  • 一流的龙岗网站建设目前最靠谱的推广平台
  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司