2020-11-05

package multi_threading;
/*

  • 实验11。3——售票程序
  • 1.实验目的:
  •  学习线程的同时运行
    
  •  掌握一个类直接继承Thread类和实现Runnable接口实现多线程的区别
    
  • 2.实验要求
  •  用程序模拟售票系统,实现4个售票点发售某日某次列车的0张车票
    
  • 3.实验指导
  •  直接继承Thread类和实现Runnable接口都能实现多线程,再写一个程序对比两者的区别
    

*/


```java
public class Sale {

	public static void main(String[] args) {
		SaleTickets t = new SaleTickets();
		//1.封闭创建4个线程,都传入参数t,再启动他们
		new Thread(t).start();
		new Thread(t).start();
		new Thread(t).start();
		new Thread(t).start();
	}

}
class SaleTickets implements Runnable{
	private int tickets = 1;
	public void run() {
		while(true) {
			if(tickets<=100) 
				System.out.println(Thread.currentThread().getName()+"销售第"+tickets++ +"票");
			else
				break;
		}
	}
}

package multi_threading;

/*
 * 这样写,只有一个线程再运行,一个线程对象只能启动一个线程,
 * 无论调用多少遍start()方法,结果都只有一个线程
 */
public class SaleA {

	public static void main(String[] args) {
		Thread t = new Thread(new SaleTickets());
		t.start();
		t.start();
		t.start();
		t.start();

	}

}



package multi_threading;


/*
 * 这里的四个线程是各自卖各自的100张票,而不是共同的100张票
 * 要实现售票,只能创建一个资源对象,但要创建多个线程区处理同一个资源独享,用程序模板中的程序就能实现这样的效果
 * 实现Runnable接口可以避免由于Java的单一继承特性带来的局限,并且适合多个相同程序代码的线程区处理同一资源的情况
 */

public class SaleB {

	public static void main(String[] args) {
		new SaleTicket().start();
		new SaleTicket().start();
		new SaleTicket().start();
		new SaleTicket().start();

	}

}
class SaleTicket extends Thread{
	private int tickets = 1;
	public void run() {
		while(true) {
			if(tickets<=100) 
				System.out.println(Thread.currentThread().getName()+"销售第"+tickets++ +"票");
			else
				break;
		}
	}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值