实验四 多线程异常处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四多线程异常处理
1.实验目的
(1) 掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相关类及对象;
(2) 掌握Java多线程的概念和实现方法;
(3) 掌握Java多线程的同步问题;
2.实验内容
实验题1创建两个线程,一个线程打印“A”,另一个线程打印“B”,比如ABBABAABBA….
代码:
package cn.shangji.ThreadDemo;
public class Xt1 implements Runnable{
/**
* @param args
*/
static Thread thread1=null;
static Thread thread2=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
Xt1 xt=new Xt1();
thread1=new Thread(xt);
thread2=new Thread(xt);
thread1.start();
thread2.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
if(Thread.currentThread()==thread1){
try {
Thread.sleep(100);
System.out.print("A");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(Thread.currentThread()==thread2){
try {
Thread.sleep(100);
System.out.print("B");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
运行结果:
实验题 2假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。输出格式如下:
第4售票点卖出第100张票
第2售票点卖出第101张票……
代码:
package cn.shangji.ThreadDemo;
class TicketSystem implements Runnable {
int size;// 总售票数
// int number=0;//
int i = 1;// 售票序号
boolean available = true;
Thread thread[] = new Thread[10];
public TicketSystem(int size) {
this.size = size;
productTread();
}
public void productTread() {
for (int i = 0; i < 10; i++) {
thread[i] = new Thread(this);
thread[i].setName("" + (i + 1));
}
}
public synchronized void sell() {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (available) {
System.out.println("第" + Thread.currentThread().getName()
+ "售票点卖出第" + (++i) + "张票");
}
if (i == size) {
available = false;
System.out.println("票已售完,请明天再来……");
System.exit(0);
}
}
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
if (Thread.currentThread() == thread[i]) {
while (i < size) {
sell();
}
}
}
}
}
public class Xt2 {
/**
* @param args
*/
public static void main(String[] args) {