知识问答-线程

来源:互联网 发布:百度网盘vip淘宝 编辑:程序博客网 时间:2024/04/30 09:40

1、线程挂起有什么作用?

 线程是靠cpu来运行的,cpu要运行一个线程(不说别的)最起码就是要占用cpu时间,象Windows这样的多任务操作系统,可以允许多个线程同时运行,所谓的同时运行并不是真正的同时运行,而是轮流运行不同的线程,因为cpu速度很快,如果线程不是很多,就会给用户有所有线程在同时运行的错觉。举个例子,系统中有10个线程要运行,如果要求在1秒内所有的线程都运行一遍,则每个线程可运行时间为10分之一秒,也就是如果一个线程已经运行了10分之一秒,系统会停止该线程(或称为挂起该线程),运行下一个线程,当又轮到挂起的线程运行时,系统会从该线程停止的地方运行,这种线程挂起是由系统进行的,即所谓的线程调度。有时候,我们的线程暂时没有数据处理,我们也可以通过一些API来使自己的线程挂起,当系统检测到线程被用户挂起时,就算轮到该线程系统也不会运行该线程,而是直接去运行下一个线程,这种情况下,除非用户使该线程退出挂起状态,否则系统不会运行该线程。从这个意义上来讲,一个线程挂起将会给其他线程赢得更多的运行时间(或机会),也就节约了CPU的时间资源。

2、什么是线程池,有什么作用?

当单个任务处理的时间很短而请求的数目却是巨大的情况下,线程池是非常好的选择。因为创建线程开销比较大,当单个任务处理的时间很短而请求的数目却是巨大的情况下,线程池是非常好的选择。若为每个请求创建新线程,在创建和销毁线程上花费的时间和消耗的系统资源,要比花在处理任务上的时间和资源更多。当你的程序需要频繁地创建销毁一些相同的线程时,就可以先创建一定数量的线程,让他们睡眠,当需要线程的时候,就从里面拿一个出来跑,跑完了再放回去,这样就增加了效率。












0 0
原创粉丝点击