Java基础复习:线程练习1

来源:互联网 发布:php命名规范 编辑:程序博客网 时间:2024/05/16 15:22

售票问题:有50张票需要3个窗口卖出;用两种线程方式卖票,观察两种方式卖票的结果有什么不同。

class Ticket1 extends Thread{int num = 50;//50张票Ticket1(String name) {super(name);}public void run() {for (int i = 0; i < 200; i++) {if(num>0){System.out.println(getName()+"卖出了第"+ num-- +"张票");}}}}public class TicketDemo1 {public static void main(String[] args) {new Ticket1("A").start();new Ticket1("B").start();new Ticket1("C").start();}}

继承方式:运行后发现,每个窗口都卖出了50张票,并不符合题目要求。

class Ticket2 implements Runnable{int num = 50;@Overridepublic void run() {for (int i = 0; i < 200; i++) {if(num>0){System.out.println(Thread.currentThread().getName()+"卖出了第"+ num-- +"张票");}}}}public class TicketDemo2 {public static void main(String[] args) {Runnable target = new Ticket2();new Thread(target,"A").start();new Thread(target,"B").start();new Thread(target,"C").start();}}

实现方式:基本能够满足题目要求

比较:

1)使用继承方式,资源不能共享,继承方式,继承了Thread类之后,就不能再继承其他类了,但继承方式更为简单

2)推荐使用接口方法,方便以后拓展,资源共享

原创粉丝点击