并发-同步锁

Synchronized

可通过 资源.wait()方法释放资源,资源.notify()随机唤醒一个等待线程

注意,只有拿到资源的锁,才能进行wait和notify操作

ReentrantLock

method

lock()

unlock()

tryLock()返回布尔值,可以尝试申请锁,申请不到可以放弃去干别的事,synchronized到死也要申请到

tryLock(time,timeUnit)在一定时间内尝试加锁

condition

Condition c1 = lock.newCondition()

c1.await()阻塞线程,释放资源和锁

c1.signal()随机唤醒资源,使用前后要加lock.lock() 和lock.unlock() 原因同synchronized

condition可以定义多个,可以比较有秩序的规定代码的运行流程

可重入:同一线程对某一锁多次加锁不会产生死锁

sleep不会释放当前资源和锁

thread.join( )方法会让join的线程执行完才会接下来执行自己线程的代码。

thread.interrupt()中断线程,只是给线程发送中断信号,是否中断要线程自己判断,并不能中断正在使用的线程。可以配合Thread.currentThread().isInterrupted()来判断是否收到中断信号

你可能感兴趣的:(并发-同步锁)