applet以及多线程.ppt

上传人:max****ui 文档编号:3375175 上传时间:2019-12-12 格式:PPT 页数:19 大小:427.31KB
返回 下载 相关 举报
applet以及多线程.ppt_第1页
第1页 / 共19页
applet以及多线程.ppt_第2页
第2页 / 共19页
applet以及多线程.ppt_第3页
第3页 / 共19页
点击查看更多>>
资源描述
2019/12/12,Applet及多线程,1,第9讲applet及多线程,主要内容applet及其应用Applet概述JApplet类applet的生命周期HTML文档与AppletAppletContext接口Applet应用示例线程(Thread)处理本讲小结,2019/12/12,Applet及多线程,2,Applet及其应用(概述),applet是在浏览器内运行的java程序applet的功能要比HTML、XML以及脚本技术的任意组合强大的多跨平台安全性不能访问任何本地文件不能访问源站点以外的网络资源通过数字签名验证可以做更多事情applet必须是Applet或JApplet的派生子类Applet及JApplet是容器类。,2019/12/12,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/12,Applet及多线程,4,applet的生命周期,init(),start(),stop(),destroy(),用户第一次打开Web页,当applet得到焦点,当用户关闭Web页或退出浏览器,当applet失去焦点,调用init()后,示例实现,绘制容器界面paint(),2019/12/12,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/12,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/12,Applet及多线程,7,Applet应用示例(例1),在applet上绘制字符串和由图像文件指定的图像.由HTML文档传递要绘制的字符串和图像文件名;在applet的init()方法中完成对象的创建及获取:使用getParameter()获取文档传递的字符串和文件名;使用getDocumentBase()获取图像文件所在的地址;使用getImage()获取要绘制的图像对象。重写paint()方法,完成对象的绘制:使用图形对象的drawString()方法在指定的位置绘制字符串;使用图形对象的drawImage()方法在指定的位置绘制图像。,程序示例实现,2019/12/12,Applet及多线程,8,例2,在applet上设置一个“打开另一个文档”按钮,当单击该按钮时,在一个新的窗口显示另一个文档.该applet应实现ActionListeren接口;在HTML文档中传递要显示的文档名;使用applet对象的getCodeBase()方法获得文档的URL;使用applet对象的getParameter()方法获得要显示文档的名称;使用AppletContext接口对象的showDocument()方法显示另一个文档。,示例程序的实现,2019/12/12,Applet及多线程,9,例3,在applet中播放音频文件,可以从列表中选择要播放的音频文件,单击“开始”时播放、“暂停”时停止、“继续”时继续播放。该applet应实现ActionListeren、ItemListener接口;可以在HTML文档中传递要播放的文档名;使用applet对象的getCodeBase()方法获得文件的URL;列表对象的getItem()方法获得文件名;使用applet对象的getAudioClip()方法获得AudioClip对象;使用AudioClip对象的play()、stop()、loop()方法播放、停止或继续播放音频。,示例程序的实现,2019/12/12,Applet及多线程,10,线程处理,程序是一段静态的代码.它是应用程序执行的蓝本进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程线程是进程执行过程中产生的多条执行线索,线程是比进程更小的执行单位线程与进程的区别:每个进程的内部数据和状态都是完全独立的;而多线程是共享一块内存空间和一组系统资源,有可能互相影响.线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。,2019/12/12,Applet及多线程,11,线程概念,线程的优势对涉及面较多交互频繁的处理,写程序比较容易;程序的吞吐量会得到改善,提高了程序的效率.由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行)在编写程序时,不必关心到底使用了多少个处理器、系统如何分配处理器的时间,而将每个线程都想象成独立运行,而且都有自己专用的处理器。Java中实现多线程的途径使用Thread类对象实现Runnable接口,2019/12/12,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/12,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/12,Applet及多线程,14,Thread类常用方法及Runnable接口,publicstaticThreadcurrentThread()获取当前活动的线程对象.publicThreadGroupgetThreadGruop()获取当前线程所属的线程组。publicvoidsetDaemon(booleanon)设置线程为守护线程(后台运行)。publicvoidsetPriority(intnewPriority)设置线程执行的优先级别。Runnable接口publicvoidrun(),2019/12/12,Applet及多线程,15,应用示例,例1在程序中创建3个线程,观察一下各线程的反应情况。从上边程序中,我们应该注意以下两点:线程的优先级在多线程程序中,线程的调度执行是按照其优先级的高低顺序进行的,同优先级的线程平分所获得的处理器时间。对于个新建线程,系统会遵循如下的原则为其指定优先级:它将继承创建它的父线程的优先级。般情况下,主线程具有普通优先级。可以通过线程对象的setPriority()方法来修改线程的优先级.守护线程所谓守护线程就是在后台运行的线程。我们可以使用线程对象的setDaemon()方法将线程设置为守护线程。守护线程从属于创建它的线程,当创建它的线程消失时,守护线程也就消失了。,示例实现,修改上例的线程优先级观察结果,2019/12/12,Applet及多线程,16,示例,例2设计如下图的用户操作界面,这是一个录入学生成绩速度的测试程序,当单击“开始”按钮时,测试开始,每隔一分钟显示到计时时间,输入一个学生的信息后,单击“下一个”按钮,开始下一个学生信息的录入,测试时间用完后,显示输入了多少个学生的信息.,基本思想:实现ActionListener接口,完成按钮事件功能实现Runnable接口,完成时间计数功能,程序实现,2019/12/12,Applet及多线程,17,线程生命周期的几个状态,newThread(),执行start()方法获得了运行所需的系统资源,系统将自动调用线程体的run()方法.线程进入这一状态并不意味着正在运行中,要看它是否获得处理器,wait()sleep()等待I/O操作完成同步锁定yield(),run()退出destroy(),2019/12/12,Applet及多线程,18,线程的同步,在多线程处理中,由于多线程共享内存,当一个线程正在使用某项资源,而另一个线程去更新它时,就会引起数据的混乱,对数据的安全形成威胁。Java采用同步化方式解决上述问题:同步化语句块synchronized(对象)语句块同步化方法synchronizedvoid方法名(参数列表)语句块/方法体,示例实现,2019/12/12,Applet及多线程,19,本讲小结,本讲首先介绍了Applet程序及其应用,然后对线程的基本概念、多线程及多线程处理进行了简要介绍。本章重点:applet和一般Java程序不同,是一种特殊的程序,运行于浏览器环境下,为安全起见,它的功能受到限制,除非有安全策略许可(将在后边的章节介绍),否则不可对本地计算机上的文件进行任何访问、不能调用本地计算机上的任何程序、不能与非applet页面的其他计算机通信等。applet程序的组成、生命周期、执行与应用。线程是程序中可并行执行的子任务,它由Thread类的一个对象表示;守护线程是后台执行的线程,当生成它的线程结束时,它也随之消失。线程的执行代码在run()方法中定义。要么创建Thread类的子类,在子类中重写run()方法;要么在程序中实现Runnable接口。线程的状态;多线程的处理;同步化语句块即同步化方法的应用。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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