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();
}
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!