信 息 工 程 学 院1 Java程序设计 实习报告 多线程异常处理 1.实验目的 (1) 掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相关类及对象; (2) 掌握Java多线程的概念和实现方法; (3) 掌握Java多线程的同步问题; 2.实验内容 实验题1 创建两个线程,一个线程打印"A",另一个线程打印"B",比如ABBABAABBA.... 主要代码: package package1; public class TestThread { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Printout A_Print = new Printout('A'); Printout B_Print = new Printout('B'); A_Print.start(); B_Print.start(); } } package package1; public class Printout extends Thread { public char out; Printout(char temp){ out = temp; } public void run(){ for(int i=0;i<5;i++){ System.out.print(out); } } } 运行结果: 实验题 2 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。输出格式如下: 第4售票点卖出第100张票 第2售票点卖出第101张票 ...... 主要代码: package package2; public class SellTicket extends Thread{ int Sellnum; static int Ticketnum = 0; SellTicket(int index){ Sellnum = index; } public void run(){ while(true){ synchronized(this){ if(Ticketnum<1000){ Ticketnum++; System.out.println("第"+Sellnum+"售票点卖出第"+Ticketnum+"张票"); //return 1; } else{ break; } try{Thread.sleep(500); } catch(InterruptedException e){} } } } } 运行结果: 实验题3 假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。 程序如下: class CBank { private static int sum=0; public static void add(int n){ int tmp=sum; tmp=tmp+n; // 累加汇款总额 try{ Thread.sleep((int)(10000*Math.random())); // 小睡几秒钟 } catch(InterruptedException e){}