- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1) 动态特征 进程具有生命周期,由创建而产生,由调度而运行,由得不到资源而阻塞,由撤消而消亡. (2) 并发特性 多个进程共同驻留在内存中,能在一段时间内交错执行. (3) 独立特征 进程是系统进行资源分配和调度的一个基本单位 (4) 结构特征 为描述进程的变化运动过程,系统为每一个进程配置一个进程控制块(PCB),这样从结构上看,进程由程序\数据集合及PCB三部分组成,一般把进程的这三部分组成内容称之为[进程映像]或[进程实体] (5)异步特征 各进程按其各自独立的,不可预知的速度向前推进,对系统来说,需提供一些机制来协调它们 * 正是因这些操作,在系统中不宜设置过多的进程,进程切换的频率也不能过高,这无疑限制了并发程序的进一步提高 如何既能有利于进一步提高并发执行程度,又能减少操作系统的时空开销呢?为此,操作系统引入了线程的概念,将 进程的两个属性相分离,让线程承担完成第二个基本属性的任务,而进程只完成第一个属性的任务。 这样的话,线程成为进程中的一个实体,是被操作系统独立调度和执行的基本单位,除了拥有在运行中必不可少的一点资源(如程序计数器等寄存器组、堆栈)外,线程自身基本上不拥有系统资源,但他可与同一进程内的其他线程共享该进程所拥有的全部资源. 这样就减少了程序并行执行时所付出的时间和空间开销,使操作系统具有更好的并发性。 * 线程与进程的区别: (1) 调度执行: 线程是操作系统调度执行的基本单位,在引入线程的操作系统中,进程一般不再是可调度分派的基本单位 (2) 资源拥有: 通过把一个应用程序分解并创建出对应的多个线程,程序员可以控制应用程序的模块性和应用程序相关事件的时间安排。线程基本上不拥有资源,它的运行资源取自于其所属的进程所拥有的情况 (3) 地址空间: 不同进程的地址空间是相互独立的,而隶属于同一进程的各线程共享同一地址空间 (4) 数量关系: 一个进程可以包含一个或多个线程,反过来则不然,一个进程中线程对另外一个进程来讲是不可见的 (5) 通信关系. 进程间通信必须使用操作系统提供的进程间通信机制,而同一进程中的各线程间可以通过直接读写数据段(如全局变量)来进行通信. * 1、实现Runnable接口的多线程例子 /** * 实现Runnable接口的类 * * @author jhao 2011-8-13 18:12:10 */ public class DoSomething implements Runnable { ????private String name; ????public DoSomething(String name) { ???????? = name; ????} ????public void run() { ????????for (int i = 0; i 5; i++) { ????????????for (long k = 0; k 100000000; k++) ; ????????????System.out.println(name + : + i); ????????} ????} } ? /** * 测试Runnable类实现的多线程程序 * * @author jhao 2011-8-13 18:12:10 */ public class TestRunnable { ????public static void main(String[] args) { ????????DoSomething ds1 = new DoSomething(阿三); ????????DoSomething ds2 = new DoSomething(李四); ????????Thread t1 = new Thread(ds1); ????????Thread t2 = new Thread(ds2); ????????t1.start(); ????????t2.start(); ????} } ** * 测试扩展Thread类实现的多线程程序 * * @author jhao 2011-8-13 18:12:10 */ public class TestThread extends Thread{ ????public TestThread(String name) { ????????super(name); ????} ????public void run() { ????????for(i
文档评论(0)