已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/12/5,Applet及多线程,1,第9讲applet及多线程,主要内容applet及其应用Applet概述JApplet类applet的生命周期HTML文档与AppletAppletContext接口Applet应用示例线程(Thread)处理本讲小结,2019/12/5,Applet及多线程,2,Applet及其应用(概述),applet是在浏览器内运行的java程序applet的功能要比HTML、XML以及脚本技术的任意组合强大的多跨平台安全性不能访问任何本地文件不能访问源站点以外的网络资源通过数字签名验证可以做更多事情applet必须是Applet或JApplet的派生子类Applet及JApplet是容器类。,2019/12/5,Applet及多线程,3,JApplet类,JApplet类是Applet的扩充子类,构造方法JApplet()常用方法publicAppletContextgetAppletContext()返回applet的接口对象.publicAudioClipgetAudioClip(URLurl,Stringname)返回音频对象.publicURLgetCodeBase()返回包含applet目录的基URL对象。publicContainergetContentPane()返回applet的contentPane对象.publicComponentgetGlassPane()返回此applet的glassPane对象publicURLgetDocumentBase()返回嵌入Applet文档的URL。publicImagegetImage(URLurl)返回由URL指定的Image对象。publicStringgetParameter(Stringname)返回HTML标记中的参数值.publicvoidplay(URLurl)播放由url指定的音频剪辑。publicvoidpaint(Graphicsg)绘制容器及组件。publicvoidinit()applet初始化。publicvoidstart()applet开始运行。publicvoidstop()停止运行applet。publicvoiddestroy()关闭applet。,2019/12/5,Applet及多线程,4,applet的生命周期,init(),start(),stop(),destroy(),用户第一次打开Web页,当applet得到焦点,当用户关闭Web页或退出浏览器,当applet失去焦点,调用init()后,示例实现,绘制容器界面paint(),2019/12/5,Applet及多线程,5,HTML文档与Applet,在将applet嵌入HTML文档时,需要在文档中设置APPLET标记,以指示浏览器装载并运行它。其标记的一般语法如下:CODE项指定applet类代码文件名;CODEBASE项指定包含applet目录的URL;ARCHIVE项用于指定applet运行中所需要的类代码所在的JAR文件;HEIGHT和WIDTH项指定applet窗口的高度和宽度,单位为像素。APPLET标记也可以换成OBJECT标记。APPLET标记内可包含PARAM标记,用来向applet传递所需的输入参数。NAME项指定参数名;VALUE项指定参数值.,示例实现,2019/12/5,Applet及多线程,6,AppletContext接口,使用该接口可获得applet的环境信息.常用的方法如下:AudioClipgetAudioClip(URLurl)获得音频剪辑对象.ImagegetImage(URLurl)获得可以在屏幕上绘制的图像.AppletgetApplet(Stringname)获得名称为name的applet.voidshowDocument(URLurl)在当前窗口显示url指定的Web页面。voidshowDocument(URLurl,Stringtarget)在target指定的窗口位置显示url指定的页面。target的取值及意义如下:_self在包含applet的框架窗口中显示。_parent在applet的父框架中显示。_top在applet窗口的顶层框架中显示。_blank在一个新的、未命名的顶层窗口中显示。name在名称为name的框架或窗口中显示。voidshowStatus(Stringstatus)在状态行显示信息status.,2019/12/5,Applet及多线程,7,Applet应用示例(例1),在applet上绘制字符串和由图像文件指定的图像.由HTML文档传递要绘制的字符串和图像文件名;在applet的init()方法中完成对象的创建及获取:使用getParameter()获取文档传递的字符串和文件名;使用getDocumentBase()获取图像文件所在的地址;使用getImage()获取要绘制的图像对象。重写paint()方法,完成对象的绘制:使用图形对象的drawString()方法在指定的位置绘制字符串;使用图形对象的drawImage()方法在指定的位置绘制图像。,程序示例实现,2019/12/5,Applet及多线程,8,例2,在applet上设置一个“打开另一个文档”按钮,当单击该按钮时,在一个新的窗口显示另一个文档.该applet应实现ActionListeren接口;在HTML文档中传递要显示的文档名;使用applet对象的getCodeBase()方法获得文档的URL;使用applet对象的getParameter()方法获得要显示文档的名称;使用AppletContext接口对象的showDocument()方法显示另一个文档。,示例程序的实现,2019/12/5,Applet及多线程,9,例3,在applet中播放音频文件,可以从列表中选择要播放的音频文件,单击“开始”时播放、“暂停”时停止、“继续”时继续播放。该applet应实现ActionListeren、ItemListener接口;可以在HTML文档中传递要播放的文档名;使用applet对象的getCodeBase()方法获得文件的URL;列表对象的getItem()方法获得文件名;使用applet对象的getAudioClip()方法获得AudioClip对象;使用AudioClip对象的play()、stop()、loop()方法播放、停止或继续播放音频。,示例程序的实现,2019/12/5,Applet及多线程,10,线程处理,程序是一段静态的代码.它是应用程序执行的蓝本进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程线程是进程执行过程中产生的多条执行线索,线程是比进程更小的执行单位线程与进程的区别:每个进程的内部数据和状态都是完全独立的;而多线程是共享一块内存空间和一组系统资源,有可能互相影响.线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。,2019/12/5,Applet及多线程,11,线程概念,线程的优势对涉及面较多交互频繁的处理,写程序比较容易;程序的吞吐量会得到改善,提高了程序的效率.由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行)在编写程序时,不必关心到底使用了多少个处理器、系统如何分配处理器的时间,而将每个线程都想象成独立运行,而且都有自己专用的处理器。Java中实现多线程的途径使用Thread类对象实现Runnable接口,2019/12/5,Applet及多线程,12,多线程实现(Thread类),构造方法Thread()Thread(Runnabletarget)Thread(Runnabletarget,Stringname)Thread(Stringname)Thread(ThreadGroupgroup,Runnabletarget)Thread(ThreadGroupgroup,Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget,Stringname,longstackSize)其中:name指定新建线程对象的名称(若没有给出,将自动以如下形式命名:“Thread-”+n,n为整数序号);Group为线程组;stackSize为堆栈大小。,2019/12/5,Applet及多线程,13,Thread类,常量MIN_PRIORITY其值为1,表示最小优先级。MAX_PRIORITY其值为10,表示最高优先级。NORM_PRIORITY其值为5;表示普通优先级。常用方法publicvoidstart()启动线程。publicvoidrun()这是一个系统自动调用的方法。publicstaticvoidsleep(longmillis)设置线程休眠millis毫秒。publicfinalvoidjoin(longmillis)等待该线程的消失,millis为等待时间。publicvoidinterrupt()中断当前线程的运行。publicstaticvoidyield()暂停当前正在执行的线程,并执行其他线程。publicstatiacintactiveCount()获取在当前线程组中活动线程的数量。,2019/12/5,Applet及多线程,14,Thread类常用方法及Runnable接口,publicstaticThreadcurrentThread()获取当前活动的线程对象.publicThreadGroupgetThreadGruop()获取当前线程所属的线程组。publicvoidsetDaemon(booleanon)设置线程为守护线程(后台运行)。publicvoidsetPriority(intnewPriority)设置线程执行的优先级别。Runnable接口publicvoidrun(),2019/12/5,Applet及多线程,15,应用示例,例1在程序中创建3个线程,观察一下各线程的反应情况。从上边程序中,我们应该注意以下两点:线程的优先级在多线程程序中,线程的调度执行是按照其优先级的高低顺序进行的,同优先级的线程平分所获得的处理器时间。对于个新建线程,系统会遵循如下的原则为其指定优先级:它将继承创建它的父线程的优先级。般情况下,主线程具有普通优先级。可以通过线程对象的setPriority()方法来修改线程的优先级.守护线程所谓守护线程就是在后台运行的线程。我们可以使用线程对象的setDaemon()方法将线程设置为守护线程。守护线程从属于创建它的线程,当创建它的线程消失时,守护线程也就消失了。,示例实现,修改上例的线程优先级观察结果,2019/12/5,Applet及多线程,16,示例,例2设计如下图的用户操作界面,这是一个录入学生成绩速度的测试程序,当单击“开始”按钮时,测试开始,每隔一分钟显示到计时时间,输入一个学生的信息后,单击“下一个”按钮,开始下一个学生信息的录入,测试时间用完后,显示输入了多少个学生的信息.,基本思想:实现ActionListener接口,完成按钮事件功能实现Runnable接口,完成时间计数功能,程序实现,2019/12/5,Applet及多线程,17,线程生命周期的几个状态,newThread(),执行start()方法获得了运行所需的系统资源,系统将自动调用线程体的run()方法.线程进入这一状态并不意味着正在运行中,要看它是否获得处理器,wait()sleep()等待I/O操作完成同步锁定yield(),run()退出destroy(),2019/12/5,Applet及多线程,18,线程的同步,在多线程处理中,由于多线程共享内存,当一个线程正在使用某项资源,而另一个线程去更新它时,就会引起数据的混乱,对数据的安全形成威胁。Java采用同步化方式解决上述问题:同步化语句块synchronized(对象)语句块同步化方法synchronizedvoid方法名(参数列表)语句块/方法体,示例实现,2019/12/5,Applet及多线程,19,本讲小结,本讲首先介绍了Applet程序及其应用,然后对线程的基本概念、多线程及多线程处理进行了简要介绍。本章重点:applet和一般Java程序不同,是一种特殊的程序,运行于浏览器环境下,为安全起见,它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孤残儿童日常护理中的社交技能培养
- 呼吸机管道的维护与管理
- 2025年一级造价工程师考试《建设工程造价管理》真题及解析
- 护理教育:融入鱼骨图思维训练
- 护理人性化服务与护理文化
- 【中考真题】黑龙江省齐齐哈尔市2026年初中学业水平考试生物学试卷(解析版)
- 护理未来趋势
- 手术室护理神经外科护理
- 护理三基:静脉输液静脉抽血技术
- 2026普通销售面试题目及答案
- 2026版高中数学新课程标准测试题及答案
- 2025中国国新资产管理有限公司相关岗位招聘4人笔试历年常考点试题专练附带答案详解2套试卷
- 高温季节安全作业培训课件
- 2025年烟草ai面试题库及答案
- 国控集团招聘面试题及答案
- 委托送拍合同范本
- 园林植物造景实训
- 2025年发电厂应聘值长面试题库及答案
- 大型机具移动施工方案
- DB11-T 638-2023 房屋修缮工程工程量计算标准
- 元宵汤圆买卖合同范本
评论
0/150
提交评论