码迷,mamicode.com
首页 > 编程语言 > 详细

多线程的一点点整理

时间:2017-06-12 11:51:29      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:一点   notify   代码块   对象锁   await   ant   syn   其他   线程同步   

1.synchronized

 synchronized:实现线程同步,同步可以是某一方法或某一个代码块,获取对象锁,其他线程阻塞。

 使用wait()释放对象锁,线程进入等待状态,wait()后面的代码将等待线程再次被唤醒时执行。

 使用notify()随机唤醒一个处于wait()方法的线程,重新获取对象锁,使用notifyAll()唤醒所有处于wait()的线程,只不过多个处于wait()方法线程会竞争对象锁,谁拿到锁谁执行,具有不确定性。

 2.Lock

 ReentrantLock lock = new ReentrantLock();//得到锁对象

 lock.lock();//获取对象锁,使得线程后面代码同步,其他线程阻塞

 lock.unlock();//释放锁

  Condition condition = lock.newCondition();//得到等待对象

  condition.await();//线程进入等待状态,await()后面的代码将等待线程再次被唤醒时执行。

  condition.signal();//唤醒一个处于await()方法的线程,重新获取对象锁,这里只唤醒condition对象执行了await()的线程,不具有随机性

  condition.signalAll();//唤醒所有处于await()的线程

多线程的一点点整理

标签:一点   notify   代码块   对象锁   await   ant   syn   其他   线程同步   

原文地址:http://www.cnblogs.com/coreyjk/p/6991900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!