8.属于上机调试题目,解答略 四、编写程序
1. public class E {
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); } } }
2. 参照本章例子6 3.参照本章例子9
习题十三(第13章)
一、问答题
1.一个URL对象通常包含最基本的三部分信息:协议、地址、资源。 2.URL对象调用InputStream openStream() 方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。 3.客户端的套接字和服务器端的套接字通过输入、输出流互相连接后进行通信。 4.使用方法accept(),accept()会返回一个和客户端Socket对象相连接的Socket对象。accept方法会堵塞线程的继续执行,直到接收到客户的呼叫。。 5.域名/IP。 四、编程题 1. (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(\收到的结果:\ box.add(showResult);
connection.addActionListener(this); send.addActionListener(this); thread=new Thread(this); add(box);
setBounds(10,30,300,400); setVisible(true); validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e) { System.exit(0); } }); }
public void actionPerformed(ActionEvent e) { if(e.getSource()==connection)
{ try //请求和服务器建立套接字连接: { if(socket.isConnected()) {} else
{ InetAddress address=InetAddress.getByName(\
InetSocketAddress socketAddress=new InetSocketAddress(address,4331); socket.connect(socketAddress);
in =new DataInputStream(socket.getInputStream()); out = new DataOutputStream(socket.getOutputStream()); send.setEnabled(true); thread.start(); } }
catch (IOException ee){} }
if(e.getSource()==send)
{ String s=inputText.getText(); if(s!=null)
{ try { out.writeUTF(s); }
catch(IOException e1){} } } }
public void run() { String s=null; while(true)
{ try{ s=in.readUTF(); showResult.setText(s); }
catch(IOException e)
{ showResult.setText(\与服务器已断开\ break; } } } }
(2)服务器端
import java.io.*; import java.net.*; import java.util.*; public class Server
{ public static void main(String args[]) { ServerSocket server=null; Server_thread thread; Socket you=null; while(true)
{ try{ server=new ServerSocket(4331); }
catch(IOException e1)
{ System.out.println(\正在监听\对象不能重复创建
}
try{ System.out.println(\等待客户呼叫\ you=server.accept();
System.out.println(\客户的地址:\ }
catch (IOException e)
{ System.out.println(\正在等待客户\ } if(you!=null)
{ new Server_thread(you).start(); //为每个客户启动一个专门的线程
} } } }
class Server_thread extends Thread
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java2实用教程第4版答案(6)在线全文阅读。
相关推荐: