锁
同步代码块
**在synchronized()中的任意对象不能是重复的,也就是说锁对象必须是唯一的 **
同步方法
同步方法的锁对象是this
```java
package com.itheima.tickets2;
public class Ticket implements Runnable{
private static int ticketCount = 100;
@Override
public void run() {
while (true){
if ("窗口一".equals(Thread.currentThread().getName())){
//同步方法
boolean result = synchronizedMehtod();
if (result){
break;
}
}
if ("窗口二".equals(Thread.currentThread().getName())){
//同步代码块
synchronized (this){
if (ticketCount==0){
break;
}else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticketCount--;
System.out.println(Thread.currentThread().getName()+"在卖票。还剩下"+ticketCount+"张票");
}
}
}
}
}
//判断票是否是最后一张
private synchronized boolean synchronizedMehtod() {
if (ticketCount==0){
return true;
}else {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticketCount--;
System.out.println(Thread.currentThread().getName()+"在卖票。还剩下"+ticketCount+"张票");
return false;
}
}
}
``
同步方法的锁对象是this
同步静态方法的锁对象是 当前对象的字节码文件