需求:简单的买票程序,多个窗口卖票,多线程
定义一个类Ticket实现Runnable接口,
定义成员属性int类型的票数nums
实现run()方法,run方法中
while(true)的死循环,打印nums--
获取Ticket对象,new出来
获取Thread()对象,new出来,构造参数:Runable对象
调用Thread对象的start()方法,开启线程
此时会有线程安全问题,使用synchronized同步代码块解决安全问题
避免死锁问题,同步中嵌套同步,而锁不同
class Ticket implements Runnable {
private int nums = 100; @Override
public void run() { while (true) {
synchronized (this) {
if (nums > 0) {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "==="
+ (nums--));
}else{
break;
} }
}
} } public class TicketDemo { /**
* @param args
*/
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(ticket).start();
new Thread(ticket).start();
new Thread(ticket).start();
new Thread(ticket).start();
} }