Java进阶(8) - 并发(多线程锁类)
一共有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当做锁 二、类锁 形式二: 三、类锁ReentrantLockLock.lock() 当前线程尝试获取一个锁,如果这个锁获取不到,则当前线程会一直休眠直到获取这个锁.Lock.lockInterruptibly() 让当前线程获取一个锁,如果锁可以用,则直接返回.否则当前线程会一直休眠直到一下两种情况中的其中一个发生:当前线程获取到这个锁其他线程打断当前线程,打断当前线程获取锁的操作是允许的.Lock.tryLock() 尝试获得一个锁,如果锁是可用的,则直接返回ture,并获取到这个锁.否则,直接返回falseLock.tryLock(long time,TimeUnit unit) 在某一段时间内尝试获取一个锁,如果锁可用,则直接返回true,否则等待超时返回fasleLock.unlock() 释放锁Lock.newCondition() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |