JAVA学习课件7

上传人:沈*** 文档编号:230579172 上传时间:2023-08-25 格式:PPT 页数:36 大小:247KB
收藏 版权申诉 举报 下载
JAVA学习课件7_第1页
第1页 / 共36页
JAVA学习课件7_第2页
第2页 / 共36页
JAVA学习课件7_第3页
第3页 / 共36页
资源描述:

《JAVA学习课件7》由会员分享,可在线阅读,更多相关《JAVA学习课件7(36页珍藏版)》请在装配图网上搜索。

1、JAVAJAVA学习课件学习课件7 7appletnApplet执行入口点由于Browser有不同的消息要通知Applet,所以需要多入口。publicclassAppletClassextendsAppletpublicvoidinit()start().stop()destroy()paint(g)update(g)Applet的生命周期init()初始化第一次被载入start()启动启动执行Appletstop()终止Browser转向其他网页时Applet暂停执行Applet回到当前页,重新激活Appletdestroy()消亡关闭浏览器生命周期称为Applet的主线程一般由Brows

2、er或appletviewer自动调用Applet的下载执行过程WWW服务器存放HTMLWWW服务器存放.classWWW浏览器(Browser)请求HTML文件下载HTML文件解释并显示HTML文件HTML文件请求Applet字节码文件下载字节码解释执行字节码HTML文件nnStringgetParameter(Stringname)Applet方法nApplet的有关方法getParameter(String):返回HTML中设定的值getCodeBase():返回.class所在网址URLgetDocumentBase():返回HTML的URLgetAppInfo():返回作者、版本、版

3、权信息showStatus(String):在浏览器的状态栏输出信息ImagegetImage(URLurl,Stringname)play(URLurl,Stringname)程序-进程-线程n程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。n进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。执行就绪等待PCBCPU挂起程序-进程-线程n线程是比进程更小的执行单位。n一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。n每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。n一个线程有它自己的入口和出口,以及一个顺序执行的序列n线程不

4、能独立存在,必须存在于进程中。n线程轻量级的进程=系统负担小,主要是CPU的分配。多线程n多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。n多线程实现单个进程中的并发计算。n各线程间共享进程空间的数据,并利用这些共享单元来实现数据交换、实时通信与必要的同步操作。n多线程的程序能更好地表述和解决现实世界的具体问题,是计算机应用开发和程序设计的一个必然发展趋势。进程与多线程单线程多线程进程传统进程多线程进程java与多线程nJava语言的一个重要功能特点就是内置对多线程的支持,它使得编程人员可以很方便地开发出具有多线程功能,能同时处理多个任务的功能强大的应用程序。nJava的所有

5、类都是在多线程的思想下定义的,Java利用线程使整个系统成为异步。n每个Java程序都有一个隐含的主线程:=applicationmain方法=Applet小程序,主线程指挥浏览器加载并执行java小程序。线程的概念模型线程控制(虚拟CPU)线程代码被操作数据Thread类nThread类综合了Java程序中一个线程需要拥有的属性和方法n当生成一个Thread类的对象后,一个新的线程诞生了。n每个线程都是通过目标对象的方法run()来完成其操作的。方法run()称为线程体(线程方法)。n提供线程体的目标对象是在初始化一个线程时指明的。n任何实现了Runnable接口(实现run()方法)的类实

6、例都可以作为线程的目标对象。建立线程例publicclassThreadTestpublicstaticvoidmain(Stringargs)Job1j=newJob1();Threadt1=newThread(j);t1.start();classJob1implementsRunnableintI;publicvoidrun()while(i50)System.out.println(i+);建立线程线程控制(虚拟CPU)线程代码被操作数据Thread的实例(t1)由实现了Runnable接口的类(Job1)提供run方法实现Runnable接口的类(Job1)的实例(j)生成与运行线程

7、 方法1class MyRun implements Runnable public void run()线程体 MyRun mr=new MyRun();Thread t1=new Thread(mr);t1.start();/Thread实例用于线程控制n适合于:定义run()方法的类必须是其他类的子类。n该类既可以继承上级类的属性和方法,其run()方法又可以用线程的方式执行。Thread类构造函数nThread(Runnabletarget)参数指定目标对象nThread(Runnabletarget,Stringname)nThread类本身就实现了Runnable接口。nThrea

8、d()实例本身提供线程体nThread(Stringname)指定线程名MyThread mt=new MyThread();mt.start();class MyThread extends Thread public void run()线程体 生成与运行线程 方法2执行run()方法建立线程线程控制(虚拟CPU)线程代码被操作数据实现Runnable接口的类(Thread类的子类)的实例(mt)由实现了Runnable接口的类(Thread类的子类)提供 的run方法Thread子类实例(mt)Thread类属性与方法n属性=MIN_PRIORITY1=NORM_PRIORITY5=MA

9、X_PRIORITY10n线程控制-对象方法=setPriority(intnewPriority)改变线程的优先级=voidstart()启动线程=StringgetName()返回线程名=BooleanisAlive()判断该线程是否在生命周期Thread类静态方法nstaticvoidsleep(毫秒):=令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队=产生例外InterruptedExceptionnstaticvoidyield()使当前执行线程重新排队,让出CPU给其他相同优先级的线程。nstaticThreadcurrentThread()返

10、回当前线程1-application2-applet线程状态新建状态new Thread(.)就绪状态start()等待状态执行状态I/Osleep()CPU调度run()结束stop()yield()消亡 I/O完成sleep时间到n多个线程操作同一数据资源,会造成操作的不完整性,会破坏数据。n临界资源临界区n解决办法加锁线程的同步与互斥1010 8810 77线程的同步与互斥n对象互斥锁在Java中,每个对象有一个“互斥锁”,该锁可用来保证在同一时刻只能有一个线程访问该对象。n锁的使用过程(当一个线程要操作一个对象时)准备加锁对象是否已加锁加锁进入临界区执行操作解锁否是线程的同步与互斥n加

11、锁1(临界区-方法)synchronized方法名进入该方法时加锁n加锁2(临界区-代码块)方法名.synchronized(this)/进入该代码段时加锁.n一个线程为某对象加锁后,便对该对象具有了监控权。3线程的同步与互斥进队出队生产者消费者线程的同步与互斥主线程线程1()线程2()操作对象共享数据(队)synchronized同步方法1(生产)wait()notify()synchronized同步方法2(消费)wait()notify()线程的同步与互斥public final void waitwait()方法n在当前线程中调用方法:对象名.wait()n使当前线程进入等待(某对象)

12、状态,直到另一线程对该对象发出notify(或notifyAll)为止。n调用方法的必要条件:当前线程必须具有对该对象的监控权(加锁)n当前线程将释放对象监控权,然后进入等待队列(wait队列)。n在当前线程被notify后,换要重新获得监控权,然后从断点处继续代码的执行。线程的同步与互斥public final void notifynotify()方法n在当前线程中调用方法:对象名.notify()n功能:唤醒等待该对象监控权的一个线程。n调用方法的必要条件:当前线程必须具有对该对象的监控权(加锁)notifyAll()n唤醒wait队列中的所有线程,并把它门移入锁申请队列。4线程状态新建

13、状态就绪状态start()等待状态执行状态CPU调度run()结束消亡等待状态对象wait()池等待状态对象lock池wait()notify()synchronized()解锁 sleep()join()yield()线程调度npublic static void sleepsleep(longmillis)当前进程休眠指定时间npublic static void yieldyield()主动让出CPU,重新排队npublic final void joinjoin():等待某线程结束5等待另一线程结束Runnableot=newotheeThread();Threadtt=newThre

14、ad(ot);tt.start();/执行自己的工作trytt.join();catch(interruptedExceptione)./继续做自己的事让给另一线程n正在执行的线程将CPU让给其他具有相同优先级的线程,自己进入就绪状态重新排队。nyield终止线程publicclassRimplementRunnableprivatebooleantimeToQuit=false;/设标记publicvoidrun()while(!timeToQuit)publicvoidstopRunning()timeToQuit=true;publicclasstestpublicstaticvoidm

15、ain(Stringargs)Runnabler=newR();Threadt=newThread(r);t.start();if()r.stopRunning();建立线程的两种方式n从严格的面向对象的设计观点,Thread类本意是封装虚拟的CPU。当虚拟CPU的功能需要修改时,才应该继承Thread类,并在其子类中编码。n单继承机制使得在某些场合不能继承Thread类(需要继承其他类,如Applet)。n优选的方式是:classMythreadimpltmentRunnablerun(.)Runnabler=newMythread();Threadt=newThread(r);t.start()Thread.sleep()Thread.currentThread().getname()结束!结束!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!