多个线程共享同一份内存,就是说,一个变量可以同时被多个线程所访问。这里要特别注意同步和原子操作的问题。

Java中最基本的同步例子。

synchronized(this) {while(isConditionFullfilled == false) {wait();}notify();
}

如果觉得使用wait/notify比较麻烦,可以使用Java提供的BlockingQueue,从名字就可以看出它是一个阻塞队列。看下面的例子。

 1 public class ConsumerProducer {
 2     private final int LIMIT = 10;
 3     private BlockingQueue<Integer> blockingQueue = new LinkedBlockingQueue<Integer>(LIMIT);
 4
 5     public void produce() throws InterruptedException {
 6         int value = 0;
 7         while (true) {
 8             blockingQueue.put(value++);
 9         }
10     }
11
12     public void consume() throws InterruptedException {
13         while (true) {
14             int value = blockingQueue.take();
15         }
16     }
17
18 }

转载于:https://www.cnblogs.com/ganchuanpu/p/5991409.html

线程间的通信方式1--共享变量(内存)相关推荐

  1. java不同进程的相互唤醒_JAVA多线程之线程间的通信方式

    一,介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码. 二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过sy ...

  2. java多线程方式轮询,深入理解JAVA多线程之线程间的通信方式

    一,介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码. 二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过sy ...

  3. JAVA多线程之线程间的通信方式

    线程间的通信方式 1同步 2while轮询的方式 3waitnotify机制 4管道通信 线程间的通信方式 1.同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通 ...

  4. java 线程间通信方式_「转」JAVA多线程之线程间的通信方式

    1. 同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信. public class MyObject { synchronized public void m ...

  5. Java线程间的通信方式

    文章目录 线程间通信的定义 一.等待-通知 (1)等待-通知机制的相关方法: (2)注意事项: (4)notify()方法的核心原理 (5)等待-通知机制的经典范式 (6)Thread.join() ...

  6. iOS开发 - 在实战中挖掘之线程间的通信方式

    技术这行怎么变的高大上呢?那一定是抛出一个个的专有名词,很多时候,我们在谈论技术的时候,往往忘记了技术本身的作用是什么?我不能说这有多不好,但多少还是会有失偏颇. 今天我们要说的内容是线程间通信,说得 ...

  7. Java开发笔记(一百零三)线程间的通信方式

    前面介绍了多线程并发之时的资源抢占情况,以及利用同步.加锁.信号量等机制解决资源冲突问题,不过这些机制只适合同一资源的共享分配,并未涉及到某件事由的前因后果.日常生活中,经常存在两个前后关联的事务,像 ...

  8. java 编写线程公共类_Java实现线程间通信方式

    线程间通信的模型: 共享内存 消息传递 我们来做道题理解一下 题目: 有两个线程A.B,A线程向一个集合里面依次添加元素"abc"字符串,一共添加十次,当添加到第五次的时候,希望B ...

  9. 进程间的几种通信方式的比较和线程间的几种通信方式

    近日想总结下进程间,线程间的通信方式,在网上搜索了下,感觉写的很好,照搬过来,当做加深记忆. 几种进程间的通信方式 (1) 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具 ...

最新文章

  1. DELL 通过iDrac安装ESXI
  2. Castle ActiveRecord学习实践(1):快速入门指南
  3. myeclipse不编译
  4. 1. 定义方法,求出指定元素在数组中出现的次数.
  5. RabbitMQ 最新版安装 (Linux环境)
  6. 设置TextField内文字距左边框的距离
  7. 带你了解AKG正反向算子注册+关联流程
  8. 进入顶层社会的顺序是什么?
  9. 自动化测试框架-pytest框架入门篇
  10. 分区表的误区:性能提升
  11. 将 DataDirect ODBC 驱动程序与 Python 和 pyodbc 一起使用
  12. word文档,中文输入模式下打出英文标点原因(微软拼音输入法为例)
  13. 电脑键盘上各个键的作用
  14. 利用GSensor让屏幕实现360度旋转
  15. mysql导出的身份证格式错误
  16. 解决Visual Studio 2015创建工程时的“DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' failed to install.”错误
  17. Nintendo Switch在线订阅包含什么?
  18. Android获取当前应用FPS(帧数)
  19. impdp 导入报错
  20. 图的邻接表存储实现(第七章 P163)

热门文章

  1. linux 6中启动模式,linux6.x启动流程
  2. python分布式爬虫系统_如何构建一个分布式爬虫:理论篇
  3. java 判断天是星期及_java判断日期是星期几的方法总结
  4. npm run build 打包 之后怎么用_npm 组件你应该知道的事
  5. 职业高中计算机英语教案,职高英语shopping教学设计.doc
  6. python 去除字符串的标点符号 用_Python输入和输出
  7. python字符串标签转化_如何在TensorFlow中将字符串标签转换为一个热向量?
  8. git 使用_Git使用总结
  9. 动态规划之最长公共子串
  10. java面试题十二 String返回类型