线程学习笔记.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线程学习笔记

线程学习笔记 1. java 程序是在 jvm 中运行的,一个 jvm 就是一个进程,在进程中不能再有进程,不在一 个 jvm 时,java 也存在多进程,进程在 java 中有一个类 java.lang.Process; 2. 进程之间运行是互不影响的,因为它们堆,栈内存是独立的,一个程序死了,其他不受 影响 3. 线程之间运行是有可能互相影响的,因为他们的栈内存独立,堆内存共享,一个线程死 了,有可能影响其他线程的 4. 所谓线程实际上就是进程中的子程序流,java 中的 jvm 是一个进程,在 jdk 文件中有一 个 javaw.exe 文件,它就是 jvm 进程;在 jvm 中运行代码程序都是线程,main 方法也是 一个线程,它叫主线程 5. 线程是一个程序中的单独的顺序流,线程同时运行,它们不依赖于其它线程但有可能相 互影响其它线程;在 java 中,有一个类是线程类,它就是 java.lang.Thread 6. 在 os 中,多进程并行执行是将一个 cpu 的时间分为时间片,在不同的时间片上执行不 同程序。例如:winamp,QQ,IE 同时运行,它们的时间片分配;在宏观上它们是并发执行, cpu 时间片轮换;微观上串行 7. 线程的并发执行是将一个进程所拥有的 cpu 时间片再分成更小的 cpu 时间片,每个小时 间片上只执行一个操作流程(线程),这就是线程并发。线程多了,每个线程执行的时间 就少,执行速度就慢了 8. 每个进程,线程的空间都包括 cpu、代码、数据(三要素缺一不可) 9. 对于进程而言,每个进程之间的数据空间是独立的,数据是存储在内存中的 10.对于线程而言,同一个进程中的线程之间的数据空间是可以共享的, 共享的空间为堆空 间 11. java 虚拟机空间分为堆,栈,静态池。进程堆,栈空间都独立;线程栈独立,堆共享 12.进程空间独立,所以切换进程就既要切换堆又要切换栈;而进程中线程切换则只切换栈, 无需切换堆,这样线程比进程的切换速度快,运行速度也快 13.一个进程中总是至少有一个线程在运行,该线程就是主线程.一个进程中只允许有一个 主线程,但可以有多个非主线程,其他线程与主线程是平级的,它们不一定依赖于主线 程,但可能影响主线程,主线程结束了,其他线程可能继续运行,不一定结束. JVM 结束 了,则所有线程都结束了,进程是线程的支撑者 14. 多个线程并发执行时间是由一个进程的 cpu 时间片来决定的,OS 中有一个线程调度专门 用来管理调度线程的,决定执行哪个线程 15.Process 类是一个抽象类,所以它不能直接用 new 来构造进程对象,那么进程对象如何 获得呢?在 API 中,我们看到了很高兴事情,就是有另外 2 种方法可获得进程对象。方 法是:ProcessBuilder.start()/Runtime.exec(). 16.ProcessBuilder 是进程构建类,它里面的静态方法 start()就可以创建一个进程对象 17.Runtime 是运行环境,它虽不是抽象类,但它的构造是不公开的,我们只可以通过它的 一个静态方法 getRuntime()方法来获得 Runtime 对象。Runtime 的这些特点说明它就是 一个典型的单例模式;有了 Runtime 对象,再调用其 exec(…)方法可以获得进程;所以 想要调什么进程程序,就要看 exec()方法;进程注意问题:进程是与 OS 相关的,所以 用了命令 exec 方法来调用程序,则 java 就不跨平台了(即在 windows 下好用但是在 Linux 下不一定好用)。 18.在 java 中对线程就是以一个接口形式存在的,这个接口就是在 java 中是 Runnable 接 口,它代表可运行的,它在java.lang 包下 19.Runnable 接口中有一个 run()方法,专门处理代码,数据的。有了代码,数据,还缺少 三要素的虚拟 cpu;虚拟cpu在 java 中是由Thread类来提供的,Thread类也在 java.lang 包下。所以只要将 Runnable, Thread 结合起来则线程就可实现并运行 20. Runnable 接口中有 run 方法,这个方法是无参的,也是无返回的,而且这个方法不能抛 异常,所以子类重写 run 方法时,也不能抛异常,不能传参,也不能返回,这就意味着

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档