zoukankan      html  css  js  c++  java
  • Java多线程间的数据共享

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

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

  • 相关阅读:
    【poj1182】 食物链
    【bzoj1013】 JSOI2008—球形空间产生器sphere
    【codevs1200】 NOIP2012—同余方程
    【poj2891】 Strange Way to Express Integers
    【bzoj2819】 Nim
    【bzoj2463】 谁能赢呢?
    【poj3537】 Crosses ans Crosses
    【bzoj2115】 Xor
    下载时出现using cached如何解决
    如何设计一个"好的"测试用例?
  • 原文地址:https://www.cnblogs.com/darkmatter/p/3606847.html
Copyright © 2011-2022 走看看