已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/4/30,Applet 及多线程,1,第9讲 applet及多线程,主要内容 applet及其应用 Applet概述 JApplet类 applet的生命周期 HTML文档与Applet AppletContext接口 Applet应用示例 线程(Thread)处理 本讲小结,2019/4/30,Applet 及多线程,2,Applet 及其应用(概述),applet是 在浏览器内运行的java程序 applet的功能要比HTML、XML以及脚本技术的任意组合强大的多 跨平台 安全性 不能访问任何本地文件 不能访问源站点以外的网络资源 通过数字签名验证可以做更多事情 applet必须是Applet或JApplet的派生子类 Applet及JApplet是容器类。,2019/4/30,Applet 及多线程,3,JApplet类,JApplet类是Applet的扩充子类, 构造方法 JApplet() 常用方法 public AppletContext getAppletContext() 返回applet的接口对象. public AudioClip getAudioClip(URL url,String name) 返回音频对象. public URL getCodeBase() 返回包含applet目录的基URL对象。 public Container getContentPane() 返回applet的contentPane 对象. public Component getGlassPane() 返回此applet的glassPane对象 public URL getDocumentBase() 返回嵌入Applet文档的URL。 public Image getImage(URL url) 返回由URL指定的Image对象 。 public String getParameter(String name) 返回HTML标记中的参数值. public void play(URL url) 播放由url指定的音频剪辑。 public void paint(Graphics g) 绘制容器及组件。 public void init() applet初始化。 public void start() applet开始运行。 public void stop() 停止运行applet。 public void destroy() 关闭applet。,2019/4/30,Applet 及多线程,4,applet的生命周期,init(),start(),stop(),destroy(),用户第一次打开Web页,当applet得到焦点,当用户关闭Web页或退出浏览器,当applet失去焦点,调用init()后,示例实现,绘制容器界面paint(),2019/4/30,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/4/30,Applet 及多线程,6,AppletContext接口,使用该接口可获得applet的环境信息.常用的方法如下: AudioClip getAudioClip(URL url) 获得音频剪辑对象. Image getImage(URL url) 获得可以在屏幕上绘制的图像. Applet getApplet(String name) 获得名称为name的applet. void showDocument(URL url) 在当前窗口显示url指定的Web 页面。 void showDocument(URL url,String target) 在target指定的窗口位置显示url指定的页面。target的取值及意义如下: “_self“ 在包含applet的框架窗口中显示。 “_parent“ 在applet的父框架中显示。 “_top“ 在applet窗口的顶层框架中显示。 “_blank“ 在一个新的、未命名的顶层窗口中显示。 name 在名称为name的框架或窗口中显示。 void showStatus(String status) 在状态行显示信息status.,2019/4/30,Applet 及多线程,7,Applet应用示例 (例1),在applet上绘制字符串和由图像文件指定的图像. 由HTML文档传递要绘制的字符串和图像文件名; 在applet的init() 方法中完成对象的创建及获取: 使用getParameter()获取文档传递的字符串和文件名; 使用getDocumentBase() 获取图像文件所在的地址; 使用getImage() 获取要绘制的图像对象。 重写paint()方法,完成对象的绘制: 使用图形对象的drawString()方法在指定的位置绘制字符串; 使用图形对象的drawImage()方法在指定的位置绘制图像。,程序示例实现,2019/4/30,Applet 及多线程,8,例2,在applet上设置一个“打开另一个文档”按钮,当单击该按钮时,在一个新的窗口显示另一个文档. 该applet应实现ActionListeren接口; 在HTML文档中传递要显示的文档名; 使用applet对象的getCodeBase()方法获得文档的URL ; 使用applet对象的getParameter( )方法获得要显示文档的名称; 使用AppletContext接口对象的showDocument( ) 方法显示另一个文档。,示例程序的实现,2019/4/30,Applet 及多线程,9,例3,在applet中播放音频文件,可以从列表中选择要播放的音频文件,单击“开始” 时播放、“暂停” 时停止、“继续” 时继续播放。 该applet应实现ActionListeren、ItemListener接口; 可以在HTML文档中传递要播放的文档名; 使用applet对象的getCodeBase()方法获得文件的URL ;列表对象的getItem()方法获得文件名; 使用applet对象的getAudioClip()方法获得AudioClip对象; 使用AudioClip对象的play()、stop()、loop()方法 播放、停止或继续播放音频。,示例程序的实现,2019/4/30,Applet 及多线程,10,线程处理,程序是一段静态的代码.它是应用程序执行的蓝本 进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程 线程是进程执行过程中产生的多条执行线索,线程是比进程更小的执行单位 线程与进程的区别: 每个进程的内部数据和状态都是完全独立的;而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。,2019/4/30,Applet 及多线程,11,线程概念,线程的优势 对涉及面较多交互频繁的处理,写程序比较容易; 程序的吞吐量会得到改善,提高了程序的效率. 由多个处理器的系统,可以并发运行不同的线程. (否则,任何时刻只有一个线程在运行) 在编写程序时,不必关心到底使用了多少个处理器、系统如何分配处理器的时间,而将每个线程都想象成独立运行,而且都有自己专用的处理器。 Java中实现多线程的途径 使用Thread类对象 实现Runnable接口,2019/4/30,Applet 及多线程,12,多线程实现(Thread类),构造方法 Thread() Thread(Runnable target) Thread(Runnable target, String name) Thread(String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, Runnable target, String name) Thread(ThreadGroup group, Runnable target, String name, long stackSize) 其中:name 指定新建线程对象的名称(若没有给出,将自动以如下形式命名: “Thread-”+n,n为整数序号); Group 为线程组; stackSize 为堆栈大小。,2019/4/30,Applet 及多线程,13,Thread类,常量 MIN_PRIORITY 其值为1,表示最小优先级。 MAX_PRIORITY 其值为10,表示最高优先级。 NORM_PRIORITY 其值为5;表示普通优先级。 常用方法 public void start() 启动线程。 public void run() 这是一个系统自动调用的方法。 public static void sleep(long millis) 设置线程休眠millis毫秒。 public final void join(long millis) 等待该线程的消失,millis为等待时间。 public void interrupt() 中断当前线程的运行。 public static void yield() 暂停当前正在执行的线程,并执行其他线程。 public statiac int activeCount() 获取在当前线程组中活动线程的数量。,2019/4/30,Applet 及多线程,14,Thread类常用方法及Runnable接口,public staticThread currentThread() 获取当前活动的线程对象. public ThreadGroup getThreadGruop() 获取当前线程所属的线程组。 public void setDaemon(boolean on) 设置线程为守护线程(后台运行)。 public void setPriority(int newPriority) 设置线程执行的优先级别。 Runnable接口 public void run(),2019/4/30,Applet 及多线程,15,应用示例,例1 在程序中创建3个线程,观察一下各线程的反应情况。 从上边程序中,我们应该注意以下两点: 线程的优先级 在多线程程序中,线程的调度执行是按照其优先级的高低顺序进行的,同优先级的线程平分所获得的处理器时间。对于个新建线程,系统会遵循如下的原则为其指定优先级: 它将继承创建它的父线程的优先级。 般情况下,主线程具有普通优先级。 可以通过线程对象的setPriority()方法来修改线程的优先级. 守护线程 所谓守护线程就是在后台运行的线程。我们可以使用线程对象的setDaemon()方法将线程设置为守护线程。守护线程从属于创建它的线程,当创建它的线程消失时,守护线程也就消失了。,示例实现,修改上例的线程优先级观察结果,2019/4/30,Applet 及多线程,16,示例,例2 设计如下图的用户操作界面,这是一个录入学生成绩速度的测试程序,当单击“开始”按钮时,测试开始,每隔一分钟显示到计时时间,输入一个学生的信息后,单击“下一个”按钮,开始下一个学生信息的录入,测试时间用完后,显示输入了多少个学生的信息.,基本思想: 实现ActionListener接口,完成按钮事件功能 实现Runnable接口,完成时间计数功能,程序实现,2019/4/30,Applet 及多线程,17,线程生命周期的几个状态,new Thread(),执行start()方法获得了运行所需的系统资源,系统将自动调用线程体的run()方法. 线程进入这一状态并不意味着正在运行中,要看它是否获得处理器,wait() sleep() 等待I/O操作完成 同步锁定 yield(),run() 退出 destroy( ),2019/4/30,Applet 及多线程,18,线程的同步,在多线程处理中,由于多线程共享内存,当一个线程正在使用某项资源,而另一个线程去更新它时,就会引起数据的混乱, 对数据的安全形成威胁。Java采用同步化方式解决上述问题: 同步化语句块 synchronized(对象) 语句块 同步化方法 synchronized void 方法名(参数列表) 语句块 /方法体 ,示例实现,2019/4/30,Applet 及多线程,19,本讲小结,本讲首先介绍了Applet程序及其应用,然后对线程的基本概念、多线程及多线程处理进行了简要介绍。 本章重点: applet和一般Java程序不同,是一种特殊的程序,运行于浏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业论文指导老师评语及答辩教师评语集锦
- 0822一级学科轻工技术与工程082203发酵工程专业硕士研究生培养方案
- 基于分时电价的热泵供热系统相变储热应用研究
- 硕士论文开题报告的内容和要求-开题报告
- 小米公司管理制度大全
- 临床试验设计在神经退行性疾病药物研发中的关键问题
- 毕业论文任务书的要求怎么写
- MBA论文模板及说明
- 延安大学西安创新学院学士学位授予细则(修订稿)
- 论文正文格式及字体要求
- 2025年公安部交管局三力测试题库及答案
- 模具品质改善培训
- 老年精神障碍患者(如痴呆、抑郁)用药方案
- 2025年长安汽车 用户运营品牌“伙伴+”新媒体运营技术方案
- 2025建筑外墙大理石干挂工程合同
- 建筑外墙孔洞封堵施工方案
- 16《动物的家》教学课件
- 2025年11月广东深圳市龙华区招聘社区网格员笔试考试备考题库及答案解析
- 新版西师版三年级上册数学全册教案教学设计含教学反思
- 特殊工序标准化作业指导书(SOS)
- 翡翠培训知识课件
评论
0/150
提交评论