从品牌网站建设到网络营销策划,从策略到执行的一站式服务
一共有3类锁 ,方法锁、对象锁、类锁。(方法锁也是对象锁的一种)
一、对象锁
对象锁
public class object {
private Lock lock = new ReentrantLock();//JavaSE1.5.新增了一个java.util.concurrent包来支持同步
public void method(){
synchronized(this){
System.out.println("我是对象锁");
}
}
}
public synchronized void method(){ //默认使用类实例this当做锁
System.out.println("我是对象锁也是方法锁");
}
这种机制确保了同一时刻对于每一个类实例,其所有声明为 synchronized 的成员函数中只有一个可执行,从而有效避免了类成员变量的访问冲突
二、类锁
一个class的静态方法和静态变量在内存中只会加载和初始化一份,一旦一个静态的方法被申明为synchronized,此类的所有的实例化对象在调用该方法时,共用同一把锁,称之为类锁。
形式一:
public class object {
public static synchronized void method(){
System.out.println("我是第一种类锁");
}
}
形式二:
public class object {
public void method(){
synchronized (object.this) {
System.out.println("我是第二种类锁");
}
}
}
三、类锁
ReentrantLock
Lock.lock() 当前线程尝试获取一个锁,如果这个锁获取不到,则当前线程会一直休眠直到获取这个锁.
Lock.lockInterruptibly() 让当前线程获取一个锁,如果锁可以用,则直接返回.否则当前线程会一直休眠直到一下两种情况中的其中一个发生:
当前线程获取到这个锁
其他线程打断当前线程, 打断当前线程获取锁的操作是允许的.
Lock.tryLock() 尝试获得一个锁,如果锁是可用的,则直接返回ture,并获取到这个锁.否则,直接返回false
Lock.tryLock(long time, TimeUnit unit) 在某一段时间内尝试获取一个锁,如果锁可用,则直接返回true,否则等待超时返回fasle
Lock.unlock() 释放锁
Lock.newCondition()
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图