出现多个线程操作同一个资源,出现线程安全问题,需要排队加锁去保证线程安全。
1.1同步方法
在方法处使用synchronized 修饰该方法
public class TreadSy implements Runnable{
private int ticketNums = 1000;
private boolean flag = true;
@Override
public void run() {
while (flag){
buy();
}
}
//同步方法synchronized
public synchronized void buy(){
if (ticketNums <= 0){
flag = false;
return;
}
System.out.println(Thread.currentThread().getName()+"买了"+ticketNums--+"票");
}
public static void main(String[] args) {
TreadSy tread = new TreadSy();
new Thread(tread,"小梦").start();
new Thread(tread,"黄牛党").start();
new Thread(tread,"老师").start();
}
}
同步代码块
代码: