多线程编程
勤劳的砖瓦匠
这个作者很懒,什么都没留下…
展开
-
Lock中实现线程的精确唤醒(使多个线程按指定的顺序执行)
lock中类似wait和notify的方法: await和signal/signalAll 原理:lock中使用Condition类做为锁监视器,调用监视器的await()和signal()实现线程的等待和唤醒。 实现代码: Lock lock=new ReentrantLock(); Condition condition=lock.newCondition(); lock.lock(); tr...原创 2020-02-22 20:49:56 · 1414 阅读 · 1 评论 -
生产者和消费者模式,虚假唤醒产生的原因和防止产生的方式
传统的生产者和消费者模式,wait(),notifyAll()的方式实现,但只适用与两个线程,如果存在两个以上的线程,会出现虚假唤醒的问题。 虚假唤醒造成的原因:首先看源码注释 /* * Wakes up all threads that are waiting on this object's monitor. A * thread waits on an object's monitor ...原创 2020-02-22 19:41:58 · 486 阅读 · 0 评论 -
多线程
多线程编程 一、线程与进程 进程:一个正在执行的程序就是一个进程,是cpu分配资源的基本单位,一个进程可以包含多个线程,进程之间的切换速度较慢。 线程:是一个进程的一部分,cpu调度的基本单位,线程之间的上下文切换速度很快。 二、创建线程的方法 1、实现Runnable接口 示例代码 public class RunnableThread implements Runnable{ public ...原创 2020-02-21 22:49:12 · 122 阅读 · 0 评论