java语言程序设计教程(java 7)——入门与提高篇06

java语言程序设计教程(java 7)——入门与提高篇06

ID:33588680

大小:237.65 KB

页数:34页

时间:2019-02-27

上传者:xinshengwencai
java语言程序设计教程(java 7)——入门与提高篇06_第1页
java语言程序设计教程(java 7)——入门与提高篇06_第2页
java语言程序设计教程(java 7)——入门与提高篇06_第3页
java语言程序设计教程(java 7)——入门与提高篇06_第4页
java语言程序设计教程(java 7)——入门与提高篇06_第5页
资源描述:

《java语言程序设计教程(java 7)——入门与提高篇06》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

第6章高级应用李绪成lixucheng@dl.cnhttp://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成主要内容•6.1多线程•6.2网络编程•6.3GUI编程http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1多线程•6.1.1线程与进程•6.1.2Java中多线程实现的方式•6.1.3线程的名字•6.1.4线程的优先级•6.1.5让线程等待•6.1.6实例:实现人能够同时说话和开车•6.1.7资源同步•6.1.8wait和notifyhttp://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.1线程与进程•进程可以看成是一个运行中的程序,每个应用就是一个运行的程序,可以看成是一个进程。操作系统提供会为每个进程分配内存空间和CPU时间等。多任务支持了多进程。•线程称为轻量级的进程,有自己的运行环境。线程存在于进程中,每个进程最少有一个线程,线程分享进程的资源。例如程序中同时进行数据读取和数据处理,这样能够提高效率,这时候就需要两个线程。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.2Java中多线程实现的方式•Java中提供了两种实现线程类的方式:–通过继承Thread类实现多线程;–通过实现Runnable接口实现多线程。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成通过继承Thread创建线程•继承Thread类实现线程类,需要覆盖run方法publicclassMyThreadextendsThread{publicvoidrun(){//定义线程要执行的代码}}•通过线程类创建线程对象:Threadt=newMyThread();Threadt=newMyThread("线程名字");•线程的启动通过start方法实现。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•【例6.1】编写两个线程类,第1个线程负责输出数字,第2个线程输出小写字母,然后编写测试程序创建这两个线程对象,并启动线程。因为计算机的计算速度非常快,所以必须循环的次数足够多才能看到效果。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成使用Runnable实现多线程•需要实现run方法:publicclassMyThread2implementsRunnable{publicvoidrun(){...}}•创建线程:Threadtt=newThread(newMyThread2());•线程的启动使用start方法。•【例6.2】使用Runnable接口实现同时输出数字和字母。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.3线程的名字•通过继承Thread实现多线程:classMyThreadextendsThread{publicMyThread(Stringname){super(name);}…}•通过实现Runnable接口实现多线程MyRunnabler=newMyRunnable();Threadt3=newThread(r,"线程3");http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•通过Thread对象的setName方法设置。•调用getName方法得到线程名字。•【例6.3】线程名字的使用http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.4线程的优先级•默认情况下,一个程序的多个线程具有相同的优先级,也就是获得CPU的概率相同。可以通过设置线程的优先级来调整每个线程获得CPU机会的大小。•调用线程的setPriority方法设置优先级,参数表示优先级。优先级的最小值是1,最大值是9,默认值是5。•需要设置优先级的情况比较少。•【例6.4】线程的优先级。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.5让线程等待•根据需要可以让线程等待一段时间再执行,可以通过4种方式:–使用sleep让线程等待一段时间;–使用yield方法让线程让出执行机会;–使用join让线程等待;–使用wait方法让线程等待。•wait方法与notify一起使用,在后面单独介绍,这里介绍前3个。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成(1)使用sleep方法让线程等待•调用Thread的sleep方法让当前线程等待一段时间,参数指出等待的时间,单位为毫秒。sleep方法需要使用try…catch处理异常。•【例6.5】让线程休息http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成(2)使用yield方法让出执行权•yield()方法与sleep()方法相似,只是它不能由用户指定线程暂停多长时间。sleep方法可以使低优先级的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会。而yield()方法只能使同优先级的线程有执行的机会。•【例6.7】使用yield方法让出执行权。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成(3)使用join方法让某个线程先执行完•可以使用join方法让某个线程执行完之后再执行另外一个线程。•【例6.8】没有使用join的情况。•【例6.9】使用join改变线程的执行顺序。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.6实例:实现人能够同时说话和开车•编写Person类表示人,Person类具有说话(speak)和开车(Drive)的功能,让Person类支持多线程,即能够在开车的同时说话。•【例6.10】Person可以同时说话和开车。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.7资源同步•多线程的问题…inttickets=getTickets();(1)setTickets(tickets‐1);(2)…•假设A线程和B线程分别表示两个售票窗口,可能的执行过程如下:–A线程执行(1),B线程执行(1),A线程执行(2),B线程执行(2)http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•资源同步可以使用关键字synchronized,相当于对资源加锁,加锁之后其他代码就不能访问了,只有等当前代码执行完之后并解锁,其他的代码才能访问。synchronized可以用在对象上,也可以用在方法上,也可以用在一段代码上。下面的代码展示了如何在对象上使用同步。•【例6.11】在对象上加锁。•【例6.12】在方法上加锁。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.8wait和notify•某个线程在执行过程中发现需要的资源不可用的时候,就需要等待,调用资源的wait方法,让当前线程处于等待状态。•处于等待状态的线程自己不能继续执行,必须等待其它线程唤醒它,其他线程通过notify或者notifyAll方法来唤醒。•【例6.13】生成者的产品要放到仓库中,消费者需要从仓库中消费商品,而仓库中只能存放10件商品。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.2网络编程•6.2.1网络编程概述•6.1.2使用URLConnection访问Web应用•6.1.3实例:提取网页中感兴趣的内容•6.1.4Socket通信•6.1.5实例:聊天室•6.1.6用户数据报通信http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.2.1网络编程概述http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.2使用URLConnection访问Web应用•访问Web应用的,Java中提供的类包括:–URL,表示要访问的网页的地址;–URLConnection,表示客户端与Web应用之间的连接,建立连接之后就可以读取从来自服务器的数据。•演示:【例6.14】下载百度首页http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.3实例:提取网页中感兴趣的内容•本例将从当当网查找某一本书的价格,按照书号查询。在现实世界中,有很多实际的应用。例如比价网,对于同一件商品可以到不同的网站上提取价格信息进行比较。另外一个典型的例子,“去哪儿网”能够从多家航空公司网站查找机票价格。•【例6.15】提取网页中感兴趣的内容http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.4Socket通信•包括两个程序:客户端程序和服务器端。•服务器端程序的工作过程:•(1)创建ServerSocket对象,指出端口。•(2)调用ServerSocket对象的accept()方法监听客户端的请求,返回一个Socket对象。•(3)通过Socket对象得到输入流对象,通过Socket对象得到输出流对象。•(4)调用Socket对象的close方法关闭连接,调用ServerSocket的close方法关闭连接。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•客户端程序的工作过程:–(1)创建Socket对象,在创建Socket对象的时候需要指出服务器端的主机和端口,主机是运行服务器端程序的电脑的IP地址或者域名,端口是服务器端ServerSocket所监听的端口。–(2)调用Socket对象的connect方法建立与服务器端的连接。–(3)通过Socket对象得到输入流对象,接收来自服务器端的信息。通过Socket对象得到输出流对象,通过输出流对象向服务器端发送信息。–(4)调用Socket对象的close方法关闭连接。•【例6.16】Socket编程http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.5实例:聊天室•服务器端负责消息的转发,当客户端连接的时候,服务器把这个消息转发给聊天室中的所有成员,当客户端发送消息的时候,把这个消息也转发给所有成员。•服务器端的程序采用多线程的方式:一个线程监听客户端的请求,一个线程负责向所有客户端发送消息,对应每个线程的接收客户端信息的线程。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•客户端程序采用多线程的方式:一个线程负责从键盘接收数据向服务器发送,另外一个线程负责从服务器端接收数据。•【例6.17】简单网络聊天室http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.1.6用户数据报通信•使用UDP发送数据的过程如下:–(1)创建DatagramSocket对象;–(2)创建DatagramPacket对象;–(3)调用DatagramSocket的方法发送DatagramPacket对象。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•使用UDP接收数据的过程如下:–(1)创建DatagramSocket对象;–(2)创建DatagramPacket对象;–(3)接收数据。•【例6.18】http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.3GUI(图形用户界面)•图形用户界面应用程序接口(GraphicsUserInterface,简称GUI)是Java提供的用于开发图形应用的API。相当于之前我们学习的命令行方式的应用程序,图形类应用开起来更漂亮,用户操作起来更简单方便。•Java基类(JFC)是关于GUI组件和服务的完整集合,大大简化了Java应用的开发和部署。提供了一整套应用程序开发包,可以帮助开发人员设计复杂的、具有交互功能的应用程序。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•JFC主要包括5种API:–AWT包括了一些基本组件和容器,能够构建简单的GUI应用程序。–Java2D是一种图形API,它以Java应用程序提供了高级的二维(2D)图形图像处理类的集合。–AccessibilityAPI提供了一套高级工具,可以辅助开发使用非传统输入和输出方式的应用程序。它提供了一个辅助技术接口。–DragandDrop技术提供了Java和本地应用程序之间的互用性,用来在Java应用程序和不支持Java技术的应用程序之间交换数据。–Swing是为基于窗体应用程序的开发而设计的。提供了整套丰富的组件和工作框架,以指定如何展示独立于平台的GUI视觉效果。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成主要内容•6.3.1Swing快速上手•6.3.2容器类的代表JFrame和JPanel•6.3.3布局方式•6.3.4基本组件•6.3.5事件处理•6.3.9几个实例•6.3.6菜单的使用•6.3.10JApplet•6.3.7树形结构的使用•6.3.11图形•6.3.8表格的使用http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成6.3.1Swing快速上手•演示程序:【例6.19】计算器•开发Swing程序的基本过程–创建窗口;–设置窗口的布局方式;–创建组件;–把组件添加到窗口中;–为组件添加事件处理;–显示窗口。http://blog.csdn.net/javaeeteacher Java语言程序设计教程(Java7)——入门与提高篇‐清华大学出版社‐李绪成•谢谢!http://blog.csdn.net/javaeeteacher

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭