下面的程序演示了一个对象被两个线程访问的方法,"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();

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

最新文章

  1. Ubuntu PPTP 服务器安装
  2. share登录Samba可读可写(适合虚拟机下学习使用)
  3. GZAPI框架初识
  4. node.js 基础学习 express安装使用
  5. Java基础-继承-子类与父类执行顺序
  6. Java NIO学习(一)
  7. IGS_学习笔记01_Integrated SOA Gateway介绍(案例)
  8. UI6_UIAlertContrller
  9. MyDetailedOS
  10. 浅谈.Net和Java互相调用的三种方式
  11. Bootstrap Modal 框 alert confirm loading
  12. 优步北京B组(8月10日-8月16日奖励规则)
  13. 网站建设常用JQuery插件整理
  14. 画布跟js.oop
  15. CSS3实现的一批hover特效
  16. new File()
  17. 打包APP
  18. UML和模式应用5:细化阶段(2)--细化阶段制品之领域模型
  19. 建议使用nginx配合uwsgi,
  20. CSS 颜色

热门文章

  1. AOF重写导致的Redis进程被kill
  2. Algorithm:MD5算法原理说明
  3. 关于scrollview的无限滚动效果实现
  4. 建立属于自己的scrapy crawl模板
  5. python 分析文本文件
  6. SQL注入:sqli-labs lesson-1 小白详解
  7. lucene Hello World
  8. 使用idea,GitHub时,push和clone出现的一些问题
  9. 在Java web项目中防止用户注销后使用浏览器中的“后退”按钮返回注销前页面
  10. python进程间的通讯实现