ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:226.99KB ,
资源ID:17346956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17346956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西北农林科技大学java多线程实验报告Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西北农林科技大学java多线程实验报告Word文档格式.docx

1、 Test.javapublic class Test public static void main(String args) Ticket t = new Ticket(); new Thread(t,1).start();2345678910任务二:银行存款假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。程序如下:classCBank private static int sum=0;public static void add(int n)inttmp=sum;tmp=tmp+n; /

2、 累加汇款总额tryThread.sleep(int)(10000*Math.random(); / 小睡几秒钟catch(InterruptedException e) sum=tmp;sum= +sum); class CCustomer extends Thread / CCustomer类,继承自Thread类 public void run() / run() methodfor(inti=1;i=3;i+)CBank.add(100); / 将100元分三次汇入public class Ex7_1 public static void main(String args) CCust

3、omer c1=new CCustomer();CCustomer c2=new CCustomer();c1.start(); c2.start(); 基本要求 运行程序5次,观察每次运行结果是否相同。思考问题 运行结果每次是否相同,运行时间是否相同,为什么?要使程序运行结果每次相同,应该怎样修改程序?程序中为什么要使用异常处理?答:运行程序5次,观察每次运行结果不相同:运行结果每次是否相同,运行时间不相同,因为程序不同步。为了使程序运行结果每次相同,程序修改如下:CBank.javaclass CBank private static int sum=0; public synchroni

4、zed static void add(int n) int tmp=sum; tmp=tmp+n; try Thread.sleep(int)(10000*Math.random(); catch(InterruptedException e) sum=tmp; System.out.println(CCustomer.java public void run() / run() method for(int i=1; CBank.add(100);Ex7_1.java CCustomer c2=new CCustomer(); c1.start();运行结果如下: 程序执行时经常会出现除零

5、溢出、数组越界等运行错误,影响程序的正常执行。Java语言通过面向对象的异常处理机制来解决运行期间的错误,可以预防错误的程序代码或系统错误所造成的不可预期的结果发生。减少编程人员的工作,增加了程序的灵活性,增加程序的可读性和健壮性.任务三:生产者和消费者问题生产者生产面包,消费者消费面包,“生产”和“消费”各代表一个进程,当生产者没有生产出面包的时候,消费者不能消费面包。当消费者没有消费完面包的时候,生产者不能再生产。程序效果如下:程序要求:一次生产5个面包,一次消费5个面包。注同步机制,wait()方法,notify()方法的使用。启动Eclipse:程序代码如下:Bread.javapub

6、lic class Bread implements Runnable int sum=0; Bread(int n) sum=n; void pro() while(sum5) sum=sum+1; System.out.println(sum+个生产完毕。开始消费- notifyAll(); void con() if(sum System.out.println(还没有生产出面包,等待中- try wait(); catch(InterruptedException e) for(int i=0;5;i+) System.out.println(sum+ sum=sum+(-1);消费完

7、毕。 public synchronized void bread(int k) if(k=1) pro(); if(k=-1) con(); if(Thread.currentThread().getName().equals(produce)启动消费 bread(-1);consume开始生产- bread(1);Wt.javapublic class Wt public static void main(String args) Bread bread=new Bread(0); Thread thread1=new Thread(bread); Thread thread2=new T

8、hread(bread); thread1.setName( thread2.setName( thread1.start(); thread2.start();实验 8 (1)掌握Socket通信(2)掌握UDP通信InetAddress类练习使用InetAddress类的方法获取的主机的IP地址;获取本地机的名称和IP地址。程序运行结果如图所示:import .*; public static void main(String args) try InetAddress address_1=InetAddress.getByName(学校的IP地址:+ address_1.getHostA

9、ddress(); InetAddress address_2=InetAddress.getLocalHost();本机的IP地址:+address_2.getHostAddress();本机的名称+address_2.getHostName(); catch(UnknownHostException e) System.out.println(e); Socket类和ServerSocket类练习利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。客户端向服务器端发送“Time”命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送

10、“Exit”命令,服务器端向客户端返回“Bye”后退出。基本要求:编写完整程序;两人一组,一个作为服务器端,另一人作为客户端。服务器端和客户端都需要打印出接受到的消息和发出的命令。程序运行结果如下:客户端服务器端Client.javaimport java.io.*;public class Client public static void main(String args) Socket mysocket; DataInputStream in=null; DataOutputStream out=null; mysocket=new Socket(127.0.0.1,4331); in=

11、new DataInputStream(mysocket.getInputStream(); out=new DataOutputStream(mysocket.getOutputStream(); String s1=Time out.writeUTF(s1); Thread.sleep(500); String s=in.readUTF(); /in读取信息,堵塞状态客户收到:+s); out.writeUTF(exit String s2=in.readUTF();+s2); return; catch(Exception e) 服务器已断开+e);Server.javaimport j

12、ava.util.*;import java.text.SimpleDateFormat;public class Server ServerSocket server=null; Socket you=null; try server=new ServerSocket(4331); catch(IOException e1) System.out.println(e1); System.out.println(等待客户呼叫 you=server.accept(); /堵塞状态,除非有客户呼叫 out=new DataOutputStream(you.getOutputStream(); in

13、=new DataInputStream(you.getInputStream(); String c=in.readUTF(); / in读取信息,堵塞状态服务器收到:+c); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy/MM/dd HH:mm:ss String hehe = dateFormat.format( now ); out.writeUTF(hehe); String c1=in.readUTF();+c1+,退出程序Bye!客户已断开运行结果:DatagramSo

14、cket类和DatagramPacket类练习编写一个数据报通信程序,实现简单的聊天功能。基本要求:两人一组编写完整程序。为了给大家减轻负担,Swing部分的代码已给出。(请同学们到作业管理系统下载Lab8.zip中的UDPmessage.java)import java.awt.*;import java.awt.event.*;import java.io.IOException;import javax.swing.*;public class UDPmessage extends JFrame implements ActionListener,Runnable private JTe

15、xtArea text; private JTextField ipText; private JTextField sendText; private JButton button; private DatagramSocket socket; private JScrollBar vsBar; Thread thread; public UDPmessage() setTitle(UDP聊天程序 setBounds(100, 100, 400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new Borde

16、rLayout(); text = new JTextArea(); text.setEditable(false); JScrollPane textPanel = new JScrollPane(text); vsBar = textPanel.getVerticalScrollBar(); add(textPanel, BorderLayout.CENTER); JPanel panel = new JPanel(); BorderLayout panelLayout = new BorderLayout(); panelLayout.setHgap(5); panel.setLayou

17、t(panelLayout); ipText = new JTextField(172.17.90.216 panel.add(ipText, BorderLayout.WEST); sendText = new JTextField(); panel.add(sendText, BorderLayout.CENTER); button = new JButton(发送 panel.add(button, BorderLayout.EAST); add(panel, BorderLayout.SOUTH); setVisible(true); server(); button.addActio

18、nListener(this); private void server() thread=new Thread(this); thread.start(); public void actionPerformed(ActionEvent ev) byte buffer=(InetAddress.getLocalHost().getHostAddress()+n +sendText.getText().trim()+n).getBytes(); InetAddress address1=InetAddress.getByName(ipText.getText().trim(); InetAdd

19、ress address2=InetAddress.getLocalHost(); DatagramPacket datapack=new DatagramPacket(buffer,buffer.length,address1,8888); DatagramSocket maildata=new DatagramSocket(); maildata.send(datapack); text.append(InetAddress.getLocalHost().getHostAddress()+ sendText.setText(null); catch(Exception ee) ee.pri

20、ntStackTrace(); DatagramPacket pack=null; DatagramSocket maildata=null; byte data=new byte8192; try pack=new DatagramPacket(data,data.length); maildata=new DatagramSocket(8888); catch(Exception ee) ee.printStackTrace(); if(maildata=null) break; else maildata.receive(pack); String message=new String(

21、pack.getData(),0,pack.getLength(); text.append(message); catch(Exception ee) ee.printStackTrace(); JFrame frame = new UDPmessage();任务四:传输对象输入与输出流现有一个Student类(请同学们到作业管理系统下载Lab8.zip):程序实现:从服务器端传输一个Student对象到客户端使用Socket类和ServerSocket类实现客户端程序运行结果如图所示:public class Client DatagramSocket mail_data=null; byte data=new byte8192; try pack=new DatagramPacket(data,data.length); mail_data=new DatagramSocket(3224); catch(Exception e); mail_data.receive(pack); System.out.println(message); catch(Exception e)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1