并发
Vance.
时光如流水。
展开
-
多线程:通信
线程通信:多个线程之间进行信息交流与传递。常用于公共数据的通信。 下面我们分别演示一下单消费者、单生产者,多消费者、多生产者的通信。 在演示之前,强调一下:多个线程访问同一个类的不同synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 ! synchronized方法使用了java的内置锁, 即锁住的是方法所属对象本身。也就是说,多个线程不能同时(并发)访问同一个同步方法,也不能同时(并发)访问不同的同步方法。 消费者、生产者(1-1)示例 1.面包类 public c原创 2021-07-10 12:44:18 · 171 阅读 · 0 评论 -
多线程:使用同步措施解决并发引起的可见性问题
解决线程并发问题的常用两种方法: 1.volatile关键字 2.synchronized关键字 下面主要介绍下synchronized关键字这种方式。 多线程可见性问题,具体可以参看另一篇文章: 点击这里 另外,插一嘴,多个线程访问同一个类的不同synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 ! synchronized方法使用了java的内置锁, 即锁住的是方法所属对象本身。什么意思呢?就是多个线程不能同时(并发)访问同一个同步方法,也不能同时(并发)访问不同原创 2021-07-10 12:17:57 · 245 阅读 · 1 评论 -
多线程:并发引起的可见性问题及常用方法小结
现象:一个线程修改了共享变量的值,另一个线程却不可见。 示例: 缓存类 public class MyCache { public String key; public String value; /** * 标记cache是否为空 */ public boolean isEmpty = true; @Override public String toString() { return "MyCache{" +原创 2021-07-08 21:47:43 · 334 阅读 · 0 评论