java线程报告_java多线程实验报告范文.docx

java多线程实验报告范文

java多线程实验报告

篇一:西北农林科技大学java多线程实验报告  实验7 多线程  1.实验目的  (1) 掌握Java多线程的概念和实现方法  (2) 掌握Java多线程的同步问题  2.实验内容  任务一:火车售票  假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。程序运行结果见左图。   打开Eclipse   Tickets.java  public class Ticket extends Thread {   int ticket =1000; String name =""; public void run(){ while(true){synchronized(name){ if(ticket  System.out.println("第" + Thread.currentThread().getName()+ "售票点卖出了第" + ticket-- + "张票");   }   } }   }} try{ } catch(InterruptedException e){ } Thread.sleep(100);  Test.java  public class Test {   } public static void main(String args[]){} Ticket t = new Ticket(); new Thread(t,"1").start(); new Thread(t,"2").start(); new Thread(t,"3").start(); new Thread(t,"4").start(); new Thread(t,"5").start(); new Thread(t,"6").start(); new Thread(t,"7").start(); new Thread(t,"8").start(); new Thread(t,"9").start(); new Thread(t,"10").start();   任务二:银行存款  假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。  程序如下:  classCBank  { private static int sum=0;  public static void add(int n){  inttmp=sum;  tmp=tmp+n;// 累加汇款总额  try{  Thread.sleep((int)(10000*Math.random())); // 小睡几秒钟  }  catch(InterruptedException e){}  sum=tmp;  System.out.println("sum= "+sum);  }  }  class CCustomer extends Thread // CCustomer类,继承自Thread类  { public void run(){ // run() method  for(inti=1;i  CBank.add(100); // 将100元分三次汇入  }  }  public class Ex7_1  {public static void main(String args[])  { CCustomer c1=new CCustomer();  CCustomer c2=new CCustomer();  c1.start();c2.start();  }  }  [基本要求] 运行程序5次,观察每次运行结果是否相同。  [思考问题] 运行结果每次是否相同,运行时间是否相同,为什么?  ①要使程序运行结果每次相同,应该怎样修改程序?  ②程序中为什么要使用异常处理?  答:运行程序5次,观察每次运行结果不相同:  运行结果每次是否相同,运行时间不相同,因为程序不同步。  ①为了使程序运行结果每次相同,程序修改如下:  CBank.java  class CBank  { private static int sum=0;  public synchronized static void add(int n){  int tmp=sum;  tmp=tmp+n;// 累加汇款总额  try{  Thread.sleep((int)(10000*Math.random())); // 小睡几秒钟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值