`
罗春桉
  • 浏览: 16048 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

线程学习之<概念理解>

阅读更多
                          为何需要线程?线程有哪些优点?
一、前序
  
   首先了解一些基本的知识,现在所用的操作系统大多为多任务系统(分时操作系统)。所谓分时操作系统,就是指可以同时执行多个程序的操作系统。具体地如:我们可以同时上网聊天、看电影、听音乐、玩游戏...。实际上并不是CPU在同时执行这些程序,CPU将时间分割为一段段很小的时间片分配给这些程序,获得时间片的程序开始执行,因为分配到的时间很短所以不等执行完毕,下一个程序有获得时间片开始执行程序。如此,多个程序轮流执行一段很短的时间,由于CPU的高速计算能力,给人的感觉就像是多个程序同时运行一样。
   
二、进程的概念

    有了以上的铺垫,下面我们再来了解一下“进程”。在多任务操作系统中都有进程这个概念。所谓进程,就是指一个独立运行的应用程序实例,如上面提到的聊天程序。每个进程都有自己私有的虚拟地址空间(独立的一块内存空间)、代码、数据和其他系统资源。进程在运行时创建的资源随着程序的终止而死亡。在进程的概念中,每个进程的内部数据都是完全独立的,因此可以想象创建并执行多个进程的系统,内存开销是比较大的。所以,线程此时应运而生。

三、线程的概念

    与进程相似,线程是一段完成某个特定功能的代码,是程序中单个顺序的控制流;而与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源的,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。因此系统在产生一个线程,所花费的空间远远小于启动一个进程所花费的空间,而且线程间彼此切换所需的时间也远远小于进程间切换所花费的时间。正因为如此,线程也被称为轻负荷进程。线程本质上,是进程中的一段并发运行代码,所以线程需要操作系统投入CPU资源来运行和调度。

   线程的状态有,创建、可运行、运行中、阻塞、死亡五种状态。线程从创建、运行到消亡的过程成为线程的生命周期。通过线程的控制与调度可使线程在这几种状态间转化,每个程序至少自动拥有一个线程,成为主线程。当程序加载到内存时,启动主线程。

四、线程的优/缺点
   优点:
   使用多线程的优点:
   1).耗时的操作使用线程,能提高应用程序响应。
   2).并行操作时使用线程,如C/S架构的服务器端并发线程响应用户请求。
   3).多CPU系统中,使用线程提高CPU的利用率。
   4).改善程序的结构。长而复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运
     行部分,这样有利与程序的理解和修改。
   5).空间花销小,线程间的切换快。
   6).线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。

   缺点:
   必须认识到线程本身可能影响系统性能的不利方面,以正确使用线程:

   1).线程也是程序,所以线程需要占用内存,线程越多占用内存也越多
   2).多线程需要协调和管理,所以需要CPU时间跟踪线程
   3).线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题
   4).线程太多会导致控制太复杂,最终可能造成很多Bug

总结参考:http://dev.firnow.com/course/4_webprogram/asp.net/netjs/200847/108719.html
                            http://java.chinaitlab.com/line/373702.html
  
分享到:
评论

相关推荐

    AIC的Java课程1-6章

    第5 版 清华大学出版社&lt;br&gt; “SCJP学习指南” 人民邮电出版社&lt;br&gt; “Java 编程思想” 第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 ...

    值类型与引用类型理论内容.part05.rar

    通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 &lt;br&gt;数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和...

    值类型与引用类型理论内容.part01.rar

    通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 &lt;br&gt;数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和...

    多线程学习文档

    进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的...

    超爽的自学课件(java)

    1) 第1章:对象入门&lt;br&gt;这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...

    关于多线程的个人总结.xmind

    关于多线程的个人总结,包括概念理解、创建线程、线程同步安全、各类锁、线程状态、并行并发、异步同步等

    java并发编程:线程基础

    通过深入学习,您将建立扎实的多线程编程基础,能够更好地理解和应用多线程编程。 多线程概述: 简要介绍多线程编程的重要性和应用场景。解释为什么多线程可以提高程序性能和资源利用率。 线程的创建: 详细讲解线程...

    《Java多线程设计模式》附源码中文教程 (PDF)

    本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...

    java多线程设计模式详解(PDF及源码)

    本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...

    异常、线程学习.md

    此文档重在学习java异常及线程的使用与注意细节 1.能够辨别程序中异常和错误的区别 2.虚拟机处理异常的方式 3.能够使用try...catch关键字处理异常 4.能够使用throws关键字处理异常 5.能够自定义异常类 6.说出进程,...

    Java多线程与线程安全实践-基于Http协议的断点续传.rar

    本资源包“Java多线程与线程安全实践-基于Http协议的断点续传....通过这个实践项目,学生不仅能够加深对Java多线程和线程安全概念的理解,还能提升解决实际问题的能力,为未来的软件开发工作打下坚实的基础。重新回答||

    Java语音学习,基础教程

    初步掌握多线程:理解线程的概念,线程同步和Lock的用法,以及线程的生命周期。 以上这些是Java语言学习的主要内容,当然也可以根据实际应用的需要进行有针对性的学习。此外,建议在学习的过程中,不仅要学习理论...

    Java线程总结教程

    在论坛上面常常看到初学者对线程的无可奈何,所以总结出了下面一篇文章,希望对一些正在学习使用java线程的初学者有所帮助。 首先要理解线程首先需要了解一些基本的东西,我们现在所使用的大多数操作系统都属于多...

    Java多线程的一些基础案例

    多线程学习的一些基础案例,帮助理解多线程的一些概念以及Java中Thread类的使用,跟博主文章-多线程配套

    Java程序设计案例教程-第8章-多线程编程.pptx

    通过本章的学习,读者应该理解线程和进程的区别,掌握Java的多线程编程技术,了解线程的同步和线程间通信等内容。 第2页 Java程序设计案例教程-第8章-多线程编程全文共36页,当前为第2页。 本章的学习目标 了解进程...

    java线程池概念.txt

    BlockingQueue&lt;Runnable&gt; workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { if (corePoolSize &lt; 0 || maximumPoolSize &lt;= 0 || maximumPoolSize &lt; corePoolSize || ...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft...

    java简易投票系统源码下载-StudyThread:学习多线程记录

    简介:个人学习多线程所记录; 1.Java多线程技能 1.1 进程和多线程的概念及线程的优点? 讲到多线程技术时,就不得不提及"进程"这个概念了。百度对进程的接受如下: 进程:是操作系统的基础,是一次程序的执行,是一...

    Unity基础知识——进程、线程、协程入门

    前言 我不知道大家在学习这段的时候是什么样的,我在...线程可以简单地理解为一个程序能同时做的不同的事情。比如一个同时收发的服务器等等。 而协程,在Unity中是一个存在于主线程中的东西。在Unity的主线程中的Update

Global site tag (gtag.js) - Google Analytics