Java面向对象程序设计课后答案(8)

2019-03-04 12:45

习题14 1.

(1)创建数据源

选择“控制面板”→“管理工具”→“ODBC数据源”(某些window/xp系统,需选择“控制面板”→“性能和维护”→“管理工具”→“ODBC数据源”)。双击ODBC数据源图标,选择“系统DSN”或“用户DSN”,单击“添加”按钮,可以创建新的数据源。 (2) 数据源选择驱动程序

选择单击“添加”按钮,出现为新增的数据源选择驱动程序界面,如果要访问Access数据库,选择Microsoft Acess Driver(*.mdb)。单击完成按钮。 (3) 数据源名称及对应数据库的所在位置

在设置数据源具体项目的对话框,在名称栏里为数据源起一个自己喜欢的名字。这个数据源就是指某个数据库。在“数据库选择”栏中选择一个已经准备好的数据库。 2.参照本章例子14.2。 3.参照本章例子14.3。 4.参照本章例子14.4。

5.使用预处理语句不仅减轻了数据库的负担,而且也提高了访问数据库

的速度。

6.事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。步骤:

(1)使用setAutoCommit(boolean autoCommit)方法

con对象首先调用setAutoCommit(boolean autoCommit)方法,将参数autoCommit取值false来关闭默认设置:

con.setAutoCommit(false);

(2) 使用commit()方法。con调用commit()方法就是让事务中的SQL语句全部生效。

(3) 使用rollback()方法。con调用rollback()方法撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commi()方法执行之前的状态。 7.参照本章例子14.2。

习题15

1.4种状态:新建、运行、中断和死亡。 2.有4种原因的中断:

JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。 线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状态。经过参数millsecond指定的豪秒数之后,该线程就重新进到线程队列中排队等待CPU资源,以便从中断处继续运行。

线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态。等待状态的线程不会主动进到线程队列中排队等待CPU资源,必须由其他线程调用notify()方法通知它,使得它重新进到线程队列中排队等待CPU资源,以便从中断处继续运行。

线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。进入阻塞状态时线程不能进入排队队列,只有当引起阻塞的原因消除时,线程才重新进到线程队列中排队等待CPU资源,以便从原来中断处开始继续运行。 3.死亡状态,不能再调用start()方法。 4.新建和死亡状态。

5.两种方法:用Thread类或其子类。 6.使用 setPrority(int grade)方法。

7.Java使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理,否则可能发生混乱。

8.当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待 9.不合理。

10.“吵醒”休眠的线程。一个占有CPU资源的线程可以让休眠的线程调用i

nterrupt 方法“吵醒”自己,即导致休眠的线程发生InterruptedException异常,从而结束休眠,重新排队等待CPU资源。 11.

public class Xiti11

{ public static void main(String args[]) { Cinema a=new Cinema(); a.zhang.start(); a.sun.start(); a.zhao.start(); } }

class TicketSeller //负责卖票的类。

{ int fiveNumber=3,tenNumber=0,twentyNumber=0; public synchronized void sellTicket(int receiveMoney)

{ if(receiveMoney==5) { fiveNumber=fiveNumber+1;

System.out.println(Thread.currentThread().getName()+ "给我5元钱,这是您的1张入场卷"); }

else if(receiveMoney==10) { while(fiveNumber<1)

{ try { System.out.println(Thread.currentThread().getName()+"靠边等"); wait();

System.out.println(Thread.currentThread().getName()+"结束等待"); }

catch(InterruptedException e) {} }

fiveNumber=fiveNumber-1; tenNumber=tenNumber+1;

System.out.println(Thread.currentThread().getName()+ "给我10元钱,找您5元,这是您的1张入场卷"); }

else if(receiveMoney==20) { while(fiveNumber<1||tenNumber<1)

{ try { System.out.println(Thread.currentThread().getName()+"靠边等"); wait();

System.out.println(Thread.currentThread().getName()+"结束等待"); }

catch(InterruptedException e) {} }

fiveNumber=fiveNumber-1; tenNumber=tenNumber-1;

twentyNumber=twentyNumber+1;

System.out.println(Thread.currentThread().getName()+

"给20元钱,找您一张5元和一张10元,这是您的1张入场卷"); } notifyAll(); } }

class Cinema implements Runnable { Thread zhang,sun,zhao; TicketSeller seller; Cinema()

{ zhang=new Thread(this); sun=new Thread(this); zhao=new Thread(this);

zhang.setName("张小有");

sun.setName("孙大名"); zhao.setName("赵中堂"); seller=new TicketSeller(); }

public void run()

{ if(Thread.currentThread()==zhang) { seller.sellTicket(20); }

else if(Thread.currentThread()==sun) { seller.sellTicket(10); }

else if(Thread.currentThread()==zhao) { seller.sellTicket(5); } } }

12.参照本章例子9。 13.参照本章例子19。 14.BA

习题16

1.URL对象调用InputStream openStream() 方法可以返回一个输入流。

2.客户端的程序使用Socket类建立负责连接到服务器的套接字对象称为socket对象。 使用Socket的构造方法Socket(String host,int port),建立连接到服务器的套接字对象。

参考16.3.2 3.JEditorPane

4.会返回一个和客户端Socket对象相连接的Socket对象。 5. 域名/IP 地址 例如,www.sina.com.cn/202.108.35.210 6. (1) 客户端 import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Client

{ public static void main(String args[]) { new ComputerClient(); } }

class ComputerClient extends Frame implements Runnable,ActionListener { Button connection,send; TextField inputText,showResult; Socket socket=null; DataInputStream in=null; DataOutputStream out=null; Thread thread; ComputerClient() { socket=new Socket(); setLayout(new FlowLayout()); Box box=Box.createVerticalBox();

connection=new Button("连接服务器"); send=new Button("发送"); send.setEnabled(false); inputText=new TextField(12); showResult=new TextField(12); box.add(connection);

box.add(new Label("输入三角形三边的长度,用逗号或空格分隔:")); box.add(inputText); box.add(send);

box.add(new Label("收到的结果:"));


Java面向对象程序设计课后答案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年中国家禽养殖行业分析报告-市场深度分析与投资前景研究(目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: