处理共享资源的代码在任何时刻只能有一个线程访问
class Ticket1 implements Runnable{
private int tickets=10;
//锁是个对象
Object lock=new Object();
public void run() {
while(true) {
//synchronized修饰的代码只允许一个线程执行,当一个线程执行时,就会修改相应的标志位,
//阻止其它线程的执行
synchronized(lock) {
try {
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
if(tickets>0) {
System.out.println(Thread.currentThread().
getName()+"--卖出的票"+tickets--);
}else break;
}
}
}
}
public class Tongbu {
public static void main(String[] args) {
Ticket1 ticket=new Ticket1();
new Thread(ticket,"线程一").start();
new Thread(ticket,"线程二").start();
new Thread(ticket,"线程三").start();
new Thread(ticket,"线程四").start();
}
}