版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java基础课程第十四章简本课件由网新()软件 (以下简称:网新)编制,网新仿真实训的学网新享有本课件中的文字叙述、文档格式、插图、等所有信息资料的,受知识法及法等法律、的保护。任何个人或组织网新的 ,网新保留 上节课回 本课目线程的通讯(难点什么是线一个程序由一个或多个进程组成的,一个进程包含一个或多个线程进程(process)本质上是一个可执行的程序。操作系统引入进程概念象实例对应一个线程多线程则指的是在单个程序中可以同时运行多个不同的线什么是线 。 线程的调抢占式:高优先级的线程抢占classMythreadextendsThreadpublicstaticvoidmain(Stringargs[])Threadt=tryfor(inti=0;i<3;i++)
输出每个 暂停1500catch(InterruptedExceptione)}}ThreadThreadrunclassmythreadextendsThread{publicvoidrun**}Runnablerun。classmythreadimplementsRunnable{publicvoidrun(){/*实现该方法*/}}startMythreadt=newstartrun()Thread(Stringname)构造名称为name classMyThread1extendsThreadpublicstaticvoidmain(Stringargs[])Threadt=
或者使implementsMyThread1ex=new}publicvoidrun()}}Born)Ready)start(Running睡眠(Slee ):线程的执行可通过使用sleep()方法来Waiting)waitResume)以说它已被恢复。阻塞(Blocked)– ,线程就处 状态。现在也不使用stop()方法新线程(新建
线程生命周ThreadstateNe
sleep()timeouorthreadjoin()orinterupt(
OtherwiseBlockedorstart( sleep(orjoin(Runnabl
Schedule
Runnin
run()complete
DeaLocavailabl synchronized(Blockedinobject`swait()pool
notify(interupt()
Blockedinobject`slockpool新死死注意stop()方法已经被作
CPUsleep(waityieldCPUclassThreadStateDemoextendsThreadThreadpublicThreadStateDemo()t=newSystem.out.printlntSystem.out.printlnt.start();publicvoidrun()try{ System.out.printlntcatch(InterruptedExceptionIE)System.out.println");}publicstaticvoidmain(Stringargs[])newThreadStateDemo();线程类常用方currentThread()返回当前运行的Thread对象。start(run()线程体,由start()方法调用,当run()方法返sleep(intn)使线程睡眠n毫秒,n毫秒后,线程可线程类常用方resume()恢复挂起的线程,使其处于可运行状态yield()将CPU控制权主动移交到下一个可运行线setName()设置线程的名字。isAlive()如果线程已被启动并且未被终止,那么isAlive()返回true。如果返回false,则该线程是线程调让处于运行状态的线程调用Thread.sleep让处于运行状态的线程调用Thread.yield让处于运行状态的线程调用另一个线程的join()线程睡眠:Thread.sleep()方publicclassMyThreadextendsThread{publicvoidrun(){for(inttry{Thread.sleep(100);}catch(InterruptedExceptione){}}}publicstaticvoidmain(Stringargs[]){MyThreadt1=newMyThread();MyThreadt2=newMyThread();}}线程让步:Thead.yield()方publicclassMyThreadextendsThread{publicvoidrun(){for(intSystem.out.println(Thread.currentThread().getName()+"}}publicstaticvoidmain(Stringargs[]){MyThreadt1=newMyThread();MyThreadt2=newMyThread();}}等待其他线程结束publicclassMachineextendsThread{publicvoidrun(){for(inta=0;a<10;a++)}publicstaticvoidmain(Stringargs[])throwsException{Machinemachine=newMachine();();}}线程类 publicfinalvoidsetDaemon(booleanpublicfinalbooleanisDaemon线程(精灵线程可以用方法publicbooleanisDaemon()确定一个线程是否守护线程,也可以用方法publicvoidsetDaemon(boolean)来设定一个线程为守护线程。 JavaThreadNORM_PRIORITYMAX_PRIORITYMIN_PRIORITYfinalvoidsetPriority(intnewp)finalintgetPriority共享资源的竞当多个线程共些数据,它们的操作会竞争共享资源,这以一个生产者(Producer),消费者(Consumer)为例,生产
堆栈privateStringintpoint=-1;…publicStringpop()Stringgoods=buffer[point];
push()
}publicvoidpush(Stringgoods){}生产者线classProducerextendsThread{privateStacktheStack;privateStringbuffer[3]buffer[2]buffer1]publicbuffer[3]buffer[2]buffer1]theStack=;
}publicvoidrun(){Stringgoods;for(inti=0;i<200;i++)System.out.println(name+":push"+goods+"to}}消费者线classConsumerextendsThreadprivateStringname;publicConsumer(Stacks,Stringname){=name;buffer[3]buffer[2]buffer[3]buffer[2]buffer1];
消费者线
}publicvoidrun(){Stringgoods;for(inti=0;i<200;i++){goods=theStack.pop();+":pop"+goods+"from"+theStack.getName());}}}创建生产者和消费者线publicclassTestpublicstaticvoidmain(Stringargs[]){Stackstack=newStack("stack1");Producerproducer1=newProducer(stack,"producer1");Consumerconsumer1=newConsumer(stack,"consumer1");}}生产 消费堆堆共享资源的竞打打印结果producer1:pushgoods0tostack1consumer1:popnullfromstack1producer1:pushgoods0tostack1…线程的同同步是一种保证共享资源完整性publicStringpop(){Stringgoods=return
publicsynchronizedStringpop(){Stringgoods=buffer[point];}}} 堆栈的方法同classStack…publicsynchronizedintgetPoint(){returnpoint;}publicsynchronizedStringpop(){…}publicsynchronizedvoidpush(Stringgoods)}线程同修改完代码以线程同在Product类的runstack线程 机制,在Java5之前,我们只能使用synchronized来锁定。们使用ReentrantLock保证代码线程安全privatestaticReentrantLocklock=new//执行后释放 堆栈的方法同 堆栈的方法同线程同步的特线程的同步的特publicstaticvoidmain(Stringargs[])Stackstack1=newProducerproducer1=newProducer(stack1,"producer1");Producerproducer2=newProducer(stack1,"producer2");Producerproducer3=newProducer(stack1,"producer3");Consumerconsumer1=newConsumer(stack1,"consumer1");Stackstack2=newStack("stack2");Producerproducer4=newProducer(stack2,"producer4");Consumerconsumer2=newConsumer(stack2,"consumer2");}}线程的同步的特
Stack1
wait()、notify()和notifyAll()方法。Objectfinal调用notify()方法。notify(waitnotifyAll(wait调用的线程放弃线程通 S生产者与消费者线程通classStack…publicsynchronizedStringpop(){}Stringgoods=buffer[point];point--return}publicsynchronizedvoidpush(Stringgoods){}生产者与消费者线程通classStack…publicsynchronizedvoidpush(Stringgoods){}}}生产者与消费者线程通publicclassTestpublicstaticvoidmain(Stringargs[]){Stackstack1=newStack("stack1");Producerproducer1=newProducer(stack1,"producer1");Consumerconsumer1=newConsumerconsumer2=new}}}生产者与消费者线程通–(1)执行this.notifyAll()方法,此时this的stack1(2)由于point为-1,因此执行this.wait()方法,生产者与消费者线程通 终止线 实际编程中,一般是定义一个标志变量,然后通过程序来改变标志变量的值,从而控制线run()方法中自然退出。终止线publicclassMyThreadStopextendsThread{inta;booleanflag=false;publicvoidrun(){}}publicvoidsetFlag(boolean_flag){}publicstaticvoidmain(Stringargs[]){try{Thread.sleep(1000);}catch(Exception}}死死classOperatorimplementsRunn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度仓库租赁与物流咨询服务合同
- 2024年度网络安全设备部署与维护协议2篇
- 2024年度网络购物平台与商家合作协议
- 2024中国石化胜利石油工程限公司毕业生招聘80人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国民航机场建设集团限公司校园招聘304人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国农业科学院西部农业研究中心(科技援疆指挥部)招聘财务工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2024下半年山东高速集团限公司校园招聘博士研究生专场招聘13人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上半年江苏南通交通建设投资集团限责任公司招聘60人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度电力设施安全评估与检测合同
- 2024年度产品代理合同:电子产品代理销售协议与市场exclusivity
- 技术创效实施策划方案
- 社区文化知识讲座
- 汽车安全与法规 (第3版) 课件 第4-6章 汽车被动安全性、汽车主动安全系统、汽车被动安全性能试验
- 提升创新创业能力
- GB/T 43480-2023无损检测相控阵超声柱面成像导波检测
- 人教版三年级数学上册“双减”作业设计 7.3周长的认识(解析版)
- 曼昆宏观经济学课后习题答案
- 北京市社保培训课件
- 防止生产现场滑倒事故的安全培训
- 气相色谱法(样品前处理)课件
- 2024年管理学理论考核试题及答案
评论
0/150
提交评论