java 第七章 延边大学 计算机系.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 多线程 程序-进程-线程 程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。 进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。 执行 就绪 等待 CPU 挂起 程序-进程-线程 线程是比进程更小一级的执行单元。 一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。 每个线程具有独立的生命周期,也是一个动态的概念。 一个线程有它自己的入口和出口,以及一个顺序执行的序列 线程不能独立存在,必须存在于进程中,各线程间共享进程空间的数据。 多线程 多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。 多线程实现单个进程中的并发计算。 各线程间共享进程空间的数据,并利用这些共享单元来实现数据交换。 进程 传统进程 多线程的进程 单线程 多线程 多线程 单线程的进程 public class A { public static void a() {…} public static void b() { a(); } public static void main(String [] args){ b(); } } main() b() a() java的线程 java的线程是通过java.lang.Thread类实现。 每个Java程序都有一个隐含的主线程:main方法所定义的线程。 可以通过创建Thread类或实现Runnable接口,创建一个线程。 Thread的run()方法是线程体,因此run方法中应该描述线程需要做的事情。 Thread用start()方法启动一个线程。 java的线程 创建线程的两种方法: ①继承Thread MyThread mt = new MyThread(); mt.start(); class MyThread extends Thread { public void run() { 线程体…} } 执行run()方法 java的线程 ②实现Runnable接口 class A implements Runnable{ public void run(){….} } class B { public static void main(String[] arg){ Runnable a = new A(); Thread t = new Thread(a); t.start(); } } java线程 实例:TestThread1.java TestThread2.java main() t.start(); … … Worker run() … 线程的状态转换 新建状态 new Thread(..) 就绪状态 start() 等待状态 执行状态 I/O sleep() CPU调度 run() 结束 stop() yield() 消亡 I/O完成 sleep时间到 线程常用方法 static void sleep(long millis) throws InterruptedException 令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队 抛出InterruptedException异常 用try块调用sleep(),用catch块处理异常 实例:TestSleep.java 线程常用方法 public final void join() throws InterruptedException 等待某一线程结束 实例:TestJoin.java main() t. join(); … … AThread run() { … } 线程常用方法 public static void yield() 暂时让出CPU,给其它线程执行机会 TestYield.java 线程优先级 线程调度时,根据优先级调度。优先级高的线程先进入运行状态。TestPriority.java 三个常量 MAX_PRIORITY 10; MIN _PRIORITY 1; NORM_PRIORITY 5; 两个方法 int getPriority() 返回线程优先级 void setPriority(int newPriority)改变线程的优先级 线程同步 问题的提出 多个线程对访问共享数据,会造成操作的不完整性,会破坏数据。 例如:①push(a): i++; num[i]=a; ②pop(): 取出num[i];i--; Thread1 Thread2 0 1 2 3 4 i 66 55 run() { while(true) push(55); } run() {

文档评论(0)

rijindj + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档