位置:学校首页 > 学校动态>重庆java培训机构全国口碑
重庆java培训机构全国口碑榜,重庆java培训到博为峰,更懂企业用人需求,主流技术点迭代更新。博为峰-专注软件测试培训17年,累计开班1000+期,为7000+企业输送了约70000测试人才,每一名学员的就业信息都真实可查.全国18大校区,签订就业相关协议,享受终身职业护航。
下文重庆java培训学校小编分享知识点java死锁,一起来看看吧
某一个同步块同时拥有两个以上对象的锁,就可能产生死锁。
Lock(锁)
JDK5开始,JAVA提供了更强大的线程同步机智---通过显示的定义同步锁对象来实现同步,同步锁使用Lock对象充当
java.util.concurrent.locks.Lock接口是控制多个线程对象共享资源进行访问的工具。锁提供了对象共享资源的独占空间,每一次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前就要先获得Lock对象
ReentrantLock类实现了Lock,他拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁、释放锁。
public class DemoLock{
public static void main(String[]args){
BuyTicket buyTicket=new BuyTicket();
new Thread(buyTicket,"玛丽").start();
new Thread(buyTicket,"小二").start();
new Thread(buyTicket,"小民").start();
}
}
class BuyTicket1 implements Runnable{
private int ticketnum=10;
//d定义lock锁
private final ReentrantLock lock=new ReentrantLock();
Override
public void run(){
while(true){
try{
lock.lock();
if(ticketnum<=0){
break;
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"买到了第"+ticketnum--+"票");
}finally{
lock.unlock();
}
}
}
}