java 线程锁详细介绍及实例代码
java线程锁
在Java线程中运用synchronized关键字来达到同步的
synchronized可以锁方法,锁类,锁对象,锁代码块
方法锁
//加在方法上面的同步锁是this publicsynchronizedvoidprint(){ System.out.println("同步方法"); try{ Thread.sleep(3000); }catch(InterruptedExceptione){ e.printStackTrace(); } }
类锁
publicsynchronizedvoidprint(Stringmsg){ //类锁 synchronized(MyThread.class){ System.out.println(msg); try{ Thread.sleep(3000); }catch(InterruptedExceptione){ e.printStackTrace(); } } }
对象锁
以卖火车票为例
publicclassWindowextendsThread{ publicWindow(Stringname){ super(name); } staticinttick=100; staticStringobj=newString(); @Override publicvoidrun(){ //开始卖票 while(tick>0){ //同步代码块 //一把锁钥匙 //所有的线程必须在这里排队 synchronized(obj){ if(tick>0){ System.out.println(getName()+"卖出了第【"+tick+"】张票");//失去了cpu资源 tick--; } } try{ Thread.sleep(100); }catch(InterruptedExceptione){ e.printStackTrace(); } } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!