Java技术与应用市公开课一等奖省赛课获奖课件_第1页
Java技术与应用市公开课一等奖省赛课获奖课件_第2页
Java技术与应用市公开课一等奖省赛课获奖课件_第3页
Java技术与应用市公开课一等奖省赛课获奖课件_第4页
Java技术与应用市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java技术与应用西安交大卫颜俊11月电子信箱:Mr.Java@163.comQQ:610568018网站:7/java进程、定时器和线程(第7章)Java技术与应用第1页主要内容JBuilder介绍案例面向对象程序设计线程设计◆Java技术与应用第2页1.JBuilder介绍Java技术与应用第3页JBuilder介绍由美国著名软件开发工具厂商Borland企业,推出新一代集成化Java开发工具(IDE)集成了几乎全部Java技术,涵盖了软件开发生命周期各个过程,是一款强大Java企业级开发平台。◆Java技术与应用第4页主要特点P2P协作开发、支持最新Java技术和最JDK新版本高开发效率、IDE可用性大大提升高级编辑器、调试功效Web开发应用服务器支持、J2EE/EJB开发团体开发、程序诊疗、Web服务、移动应用、优化集成、XML、库更新和开放式工具……◆Java技术与应用第5页主要功效主要功效分布在主窗口各个区域,包含工程格、文件标签、内容格、结构格和状态格等,组件板、组件树、设计标签、设计台和观察器等。◆Java技术与应用第6页2.案例面向对象

程序设计Java技术与应用第7页虚拟酒店点菜系统

Java技术与应用第8页功效客人使用账号和密码登录成功以后,能够随意点菜,由系统将点好菜单传送到厨师处。还能够查看厨师为自己炒好菜单,并食用;厨师使用账号和密码登录成功以后,能够看到全部客人向其点菜单,并炒好任意一个菜,由系统将炒好菜单传送到客人;系统管理员能够统计每一位客人消费金额,和每一位厨师收入金额。

Java技术与应用第9页分析结果厨师类、菜系类、菜谱类、客人类和菜单类◆Java技术与应用第10页设计结果厨师类、菜系类、菜谱类、客人类、菜单类和各个类相关操作◆Java技术与应用第11页设计结果(2)系统人机界面包含:客人面板类、客人窗口类、厨师面板类和厨师窗口类;数据管理包含:厨师表、菜系表、菜谱表、菜单表和客人表;任务管理包含:界面数据刷新线程。◆◆Java技术与应用第12页程序设计菜系类.java菜谱类.java厨师类.java客人类.java菜单类.java数据库配置接口.java数据库连接类.java数据访问类.java厨师窗口类.java厨师面板类.java客人窗口类.java客人面板类.java◆基本类文件数据库访问类文件人机界面类文件Java技术与应用第13页案例打包与运行厨师端程序:Host.jar客人端程序:Guest.jar管理员端程序(暂缺):Admin.jar◆Java技术与应用第14页关于案例思索使用Applet作为人机界面使用HTML、JSP、或Servlet作为人机界面使用网络代替数据库功效深入完善◆Java技术与应用第15页3.线程设计Java技术与应用第16页进程与线程概念

进程程序一次执行,系统进行资源申请、调度和独立运行单位含有就绪、运行和停顿等三个主要状态以及优先级,优先级高进程首先投入运行。线程包含指令序列,是程序运行基本单位,它比进程更小,仅作为CPU调度单位,只拥有必不可少资源含有就绪、阻塞(等候)和执行三种基本状态和优先级。◆Java技术与应用第17页进程与线程关系进程是线程容器,必须拥有一个在它环境中运行线程以负责执行包含在进程地址空间中代码。每个进程最少拥有一个线程,来执行进程地址空间中代码。当某个程序开启时,将建立一个进程,它拥有这个程序所需要内存和其它资源等,操作系统会自动创建这个进程第一个线程,称为根本程。今后,该线程能够创建其它线程。◆Java技术与应用第18页多线程多线程间共享数据和代码空间一个进程中会有多个线程在运行。单CPU怎样实现多线程(线程A、B)并行执行划分极短CPU时间片A各线程轮番占用一个时间片◆BJava技术与应用第19页进程管理程序设计每个Java应用程序运行都必定建立一个Runtime类实例,以保持应用程序与其运行环境联络经过Runtime类方法getRuntime获取当前运行时状态对象exec执行外部进程,返回该进程对象Process类对象代表一个进程◆

Java技术与应用第20页进程举例:【例7-1】题意:由键盘输入一个外部命令然后在Java程序中执行该命令最终取得命令运行结果并显示

◆Java技术与应用第21页进程举例:【例7-1】(续)算法概述:结构Scanner类对象,并调用nextLine方法完成键盘输入字符串命令功效使用Runtime类静态方法getRuntime取得运行时实例调用运行时实例exec方法执行命令,并取得Process类对象(进程实例)调用进程实例getInputStream方法取得输入流对象,并使用输入流对象readLine方法读取和显示命令运行之后每一行结果参见程序文件“ProcessDemo.java”

◆Java技术与应用第22页进程举例:【例7-1】(续2)思索题:怎样管理外部进程输入Java中调用MatLabJava中调用C程序JNI:Java与C++接口◆Java技术与应用第23页定时器线程由操作系统管理和调度而定时器能够由程序本身来把握Timer类-定时器用于安排以后在后台线程中执行任务。Timer()结构一个新定时候定时器。cancel()终止此定时器,丢弃全部当前已安排任务。schedule(TimerTasktask,longdelay,longperiod)安排指定定时器任务从指定延迟后开始进行重复固定周期执行。◆Java技术与应用第24页定时器任务TimerTask类-定时器任务由Timer安排为一次执行或重复执行任务是一个抽象类,需要继承得到其子类并实现其run方法,以指定定时器任务要执行操作。run方法格式以下:publicvoidrun(){……}◆

Java技术与应用第25页定时器程序设计步骤⑴建立定时器任务类,并编写run方法,比如:classMyTimerTaskextendsTimerTask{publicvoidrun(){}}⑵结构定时器任务类对象,比如:MyTimerTaskmyTimerTask=newMyTimerTask();⑶结构定时器类对象,比如:TimermyTimer=newTimer();⑷调用定时器schedule方法,传递定时器任务对象,初始延迟和间隔时间等三个参数,开启定时器任务⑸必要时,使用定时器cancel方法来结束定时器执行◆Java技术与应用第26页定时器举例:【例7-2】题意:建立一个递增计数器建立一个递减计数器当它们计数值靠近时结束◆Java技术与应用第27页定时器举例:【例7-2】(续)算法简述:编写这两个定时器任务类与run方法在主方法中结构一个定时器对象和两个定时器任务对象经过该定时器依次开启两个定时器任务当两个定时器任务中计数器值靠近时,结束该定时器执行并退出程序。参见程序文件“TimerDemo.java”◆Java技术与应用第28页定时器举例:【例7-2】(续2)思索题:一个定时器1ms,另一个10ms,该怎样处理?去掉main最终for(;;)会出现什么情况?三个计数器时该怎样进行?定时器任务能够替换

◆Java技术与应用第29页产生一个线程主(缺省)线程:Application:main()Applet:浏览器用户自定义线程(多线程)创建用户Thread子类,继承类Thread在Thread子类run()方法中定义用户线程工作在根本程中start()用户创建Thread子类实例,该线程被调度时系统自动执行run()方法使用户类实现Runnable接口(含方法run())用本类实例作参数,创建Thread类实例,继承本类中run()方法,实现子线程任务在用户类方法中start()所创建Thread实例◆Java技术与应用第30页继承类ThreadThread对象无法直接使用,而经过:publicvoidrun(){}方法,它是线程主方法,线程执行第一件事与Applicationmain()类似。

run()缺省为空,能够覆盖。举例:publicclassMyUsefulThreadextendsThread{publicvoidrun(){//...}}经过调用start()方法来开启线程:MyUsefulThreadt=newMyUsefulThread();t.start();◆Java技术与应用第31页实现接口Runnable使用Runnable接口增加对类线程支持,而无须继承类Thread,其中只申明了一个方法:publicvoidrun();

产生线程有两步:

实现接口Runnable

实现方法run()举例:publicclassMyUsefulThreadimplementRunnable{publicvoidrun(){//...}}经过调用start()方法来开启线程:Threadt=newThread(newMyUsefulThread());t.start();◆Java技术与应用第32页线程举例:【例7-3】题意:使用两个线程分别显示指定不一样范围内全部整数◆Java技术与应用第33页线程举例:【例7-3】(续)算法简述:建立一个线程类,其线程体显示指定范围内全部整数在主方法中结构其两个对象,指定范围分别是0~199和200~399开启这两个线程参见程序文件“ThreadTester.java”◆Java技术与应用第34页线程举例:【例7-3】(续2)思索题:怎样改变两个线程结果显示次序?两个以上线程时该怎样处理?线程中能够有子线程吗?线程任务能够替换◆Java技术与应用第35页线程状态与调度

Java提供了线程调度器监控就绪状态中全部线程。按照线程优先级来决定调度哪些线程(优先级由高到低)。线程调度是抢先式(较高优先级线程代替当前线程进入就绪状态)。同优先级线程采取轮转法。Thread.MIN_PRIORITY---->Thread.MAX_PRIORITY(1-->10)线程缺省优先级为Thread.NORM_PRIORITY(5)。线程创建时继承父线程优先级方法intgetPriority()取得线程优先级,voidsetPriority(intnewPriority)设置线程优先级。◆Java技术与应用第36页线程五个状态

Java技术与应用第37页线程同时概念问题提出线程对内存、数据共享线程执行不确定性引发执行结果不稳定问题处理同时:用synchronized关键字前缀给针对共享资源操作加锁;同时方法、同时块使用synchronized来实现一次只能有一个线程一个方法或代码块执行功效。管程:最先进入同时块线程拥有该块管程,其它线程将不能执行该块代码,不能改变共享变量,直到原线程结束或调用wait()释放管程◆Java技术与应用第38页线程同时实现wait():令当前线程挂起并放弃管程,同时资源解锁,使别线程可访问并修改共享资源,而当前线程排队等候再次对资源访问notify()唤醒正在排队等候资源管程线程中优先级最高者,使之执行并拥有资源管程wait()+notify()+标志变量:可协调、同时不一样线程工作sleep():休眠时并不放弃监控器(monitor)◆Java技术与应用第39页

详细编程时,使用关键字synchronized(即同时控制)类方法格式:synchronizedreturnTypemethodName([paramList]){…}使用synchronized来实现一次只能有一个线程执行一个方法或代码块功效。

温馨提示

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

评论

0/150

提交评论