synchronize(同步监视器){
// 需要被同步的代码
}
说明:
1.操作共享数据的代码,即为需要被同步的代码块;
2.共享数据:多个线程共同操作的变量。
3.同步监视器,俗称;锁,任何一个类的对象,都可以充当锁。
要求:多个线程必须要共用同一把锁。
class sellTicketsAction implements Runnable {
private int ticket = 1000;
@Override
public void run() {
while (true) {
synchronized(this){
if(ticket > 0) {
System.out.println(Thread.currentThread().getName() + "卖票号为:" + ticket);
ticket--;
}
}else {
break;
}
}
}
}
2.同步方法。
private synchronized void action(){
//执行代码
}
总结: 1.同步方法仍然涉及到同步监视器,只是不需要我们显示的声明。
2.非静态的同步方法,同步监视器:this;静态的同步方法,同步监视器是:当前本身类。
3.lock锁private ReentrantLock lock = new ReentrantLock(); lock.lock(); //需要执行的代码 lock.unlock();



