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();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)