摘要: 一、内存模型 Java中的内存分为五个部分,分别是方法区、虚拟机栈、堆、程序计数器和本地方法区。 1.方法区 存放运行时加载的类信息、静态变量、常量等信息。 2.虚拟机栈 存放对象的引用、方法的返回地址等。 每个线程都有一个栈。 3.堆 主要存放对象的实例。 所有线程共享同一个堆。 4.程序计数器 阅读全文
posted @ 2020-03-18 20:34 PraveZ 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 对一个变量添加volatile修饰,可以实现以下功能: 对这个变量的修改都会即时被写回内存,保证任何其他线程在读取的都是都读到的是实时值; Java中,变量都是保存在主内存中的,当线程访问变量时,都是从主内存拷贝一份到自己的工作内存,修改完值后再写回主内存。使用volatile可以保证线程在修改后, 阅读全文
posted @ 2020-03-18 17:58 PraveZ 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 生产者一边在生产,消费者一边消耗。当库存满的时候生产者暂停生产,直到有空位;当库存空的时候消费者暂停消费,直到有产品。 关键点: 1. 生产者和消费者都是在不断生产和消费的,是同时并发的,不应该等满了再消费 / 空了再生产。 2. 前提条件是生产速度和消费速度不同。 设计方法: 1. 生产者和消费者 阅读全文
posted @ 2020-03-18 16:16 PraveZ 阅读(455) 评论(0) 推荐(1) 编辑