下面的程序演示了一个对象被两个线程访问的方法,"monitor.gotMessage();"这一句虽然是monitor对象的方法,但却是运行在"MyObject"的线程里,而不是"monitor"线程里。 BusyWaiting.java:

public class BusyWaiting { public static void main(String[] args) { Monitor monitor = new Monitor(); MyObject o = new MyObject(monitor); new Thread(o, " MyObject ").start(); new Thread(monitor, " monitor ").start(); System.out.println("main thread exit..."); } }

MyObject.java

import java.util.concurrent.TimeUnit; public class MyObject implements Runnable { private final Monitor monitor; public MyObject(Monitor monitor) { this.monitor = monitor; } public void run() { try { TimeUnit.SECONDS.sleep(3); System.out.println("i'm going."); monitor.gotMessage(); } catch (InterruptedException e) { e.printStackTrace(); } } }

Monitor.java

public class Monitor implements Runnable { private volatile boolean go = false; public void gotMessage() throws InterruptedException { go = true; } public void watching() { while (go == false) ; System.out.println("He has gone."); } public void run() { watching(); } }

另外采用

MyObject o = new MyObject(monitor); new Thread(o, " thread1 ").start(); new Thread(o, "thread2").start();

也是一种常用的多个线程共享数据的方式,

转载于:https://www.cnblogs.com/darkmatter/p/3606847.html

Java多线程间的数据共享相关推荐

  1. Java多线程间的通信

    Java多线程间的通信 Java还提供了一种线程间通信的机制,这种通信通什么实现? wait,notify等机制    或使用pipeInputStream和pipeOutputStream 1. 线 ...

  2. java核心知识点学习----多线程间的数据共享的几种实现方式比较

    需求:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j减少1. 实现数据共享的几种方式比较: 1.使用同一个runnable对象 如果每个线程执行的代码相同,那么可以使用同一个runnabl ...

  3. java 多线程间通讯_JAVA多线程间通讯常用实现方法解析

    如何实现线程间通讯,有如下三种方法: 1.使用Semaphore (信号量)类来控制线程的等待和释放 功能:三个线程 a .b .c 并发运行,b,c 需要 a 线程的数据怎么实现 分析:考虑到多线程 ...

  4. java多线程间的通讯

    什么是多线程之间的通讯? 就是多个线程在操作同一个资源,但是操作的动作不同. package com;class Printer{// 打印机public String fileName;public ...

  5. java多线程间的通信传值_Java 多线程之间的通信

    一个线程送水,一个线程出水:多个线程操作同一个资源,但操作的动作不同.两个线程操作同一资源,但操作的动作不一样.两个方法 packagecn.itcast.day5.thread;//一进一出 pub ...

  6. Java 多线程(七) 线程间的通信

    Java 多线程(七) 线程间的通信--wait及notify方法 线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务. Object类中相关的方法有两个notify方法 ...

  7. Java多线程:线程间通信之Lock

    Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...

  8. Java多线程编程-(5)-使用Lock对象实现同步以及线程间通信

    前几篇: Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-线程本地Th ...

  9. Java多线程编程-(4)-线程间通信机制的介绍与使用

    上一篇: Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-线程本地Th ...

最新文章

  1. 推荐一个比吴恩达还优质的机器学习课程
  2. Flex Socket 与 C# 通信
  3. Xamarin Essentials教程屏幕状态DeviceDisplay
  4. asp.net2.0导出pdf文件完美解决方案(转载)
  5. Gradle系列(三):项目实践
  6. 各个版本spring的jar包以及源码下载地址
  7. Java类加载器总结
  8. 20172318 2018-2019-1 《程序设计与数据结构》第9周学习总结
  9. 交换机和路由器的区别_秒懂交换机和路由器的功用区别 拷贝
  10. 移动端的注册登录设计灵感!
  11. java给文件添加水印_Java在PDF中添加水印(文本/图片水印)
  12. php7 电子书 下载,PHP 7: Real World Application Development
  13. 有哪些好用的电脑桌面分类管理软件?这3款软件让你的效率秒杀小伙伴!
  14. 记录CheckBook状态:SharedPreferences存储器
  15. Java负整数的左移、右移、无符号右移
  16. 软件测试技能大赛山东省,2018年全国职业院校技能大赛山东省选拔赛高职组软件测试赛项规程.pdf...
  17. python的循环语句有哪些_python的循环语句
  18. 万里汇WorldFirst个人和企业帐户注册教程(送$25+1%提现费)
  19. 大数据数仓建模(3)
  20. 基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

热门文章

  1. swagger文档配置
  2. Flash与组件:制作Slider组件
  3. Altera FPGA程序固化
  4. GDAL源码剖析(一)
  5. 快速制图插件更新说明2018-05-09
  6. 几种常见的可靠UDP传输协议(包含C#实现)
  7. Go获取命令行参数及信号量处理
  8. 如何在游戏机制中使用AI/剧情脚本----基于LUA
  9. 如何用python控制设备实现自动_带你用 Python 实现自动化群控设备
  10. 计算机电容的作用,请问电脑cpu电容作用是什么?