首页 > 代码库 > 多线程的一点点整理
多线程的一点点整理
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()的线程
多线程的一点点整理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。