售票问题
- 创建Runnable接口的实现类(或者使用Thread类的子类)
public class RunableImp implements Runnable {
static int ticket=100;
//同步锁
Object obj=new Object();
@Override
public void run() {
while (true){
synchronized (obj){
if (ticket>0){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"号窗口正在卖第"+ticket+"号票");
ticket--;
}
}
}
}
}
- Thread类的子类来实现
public class MyThread extends Thread {
static int ticket=100;
//同步锁
Object obj=new Object();
@Override
public void run() {
while (true){
synchronized (obj){
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"号窗口正在售卖第"+ticket+"号票");
ticket--;
}
}
}
}
}
3.主方法
public class Demo01 {
public static void main(String[] args) {
/*
//使用Runable实现类接口
Runnable run=new RunableImp();
Thread t01=new Thread(run);
Thread t02=new Thread(run);
Thread t03=new Thread(run);
Thread t04=new Thread(run);
t01.start();
t02.start();
t03.start();
t04.start();
*/
/*
//使用Thread类的子类来实现
MyThread t01=new MyThread();
MyThread t02=new MyThread();
MyThread t03=new MyThread();
MyThread t04=new MyThread();
t01.start();
t02.start();
t03.start();
t04.start();
*/
}
}