当前位置:  技术问答>java相关

JAVA初学者的小问题,各位大侠帮帮忙。

    来源: 互联网  发布时间:2015-06-07

    本文导语:  请问类和类之间如何通讯?线程和线程之间又如何通讯? Java有象VC里面的消息的东西吗? 先谢谢大家了。 | 我只对管道通信蛮清楚的说 core in java里面有个很不错的管道通信例子 程序如下 import java.util...

请问类和类之间如何通讯?线程和线程之间又如何通讯?
Java有象VC里面的消息的东西吗?
先谢谢大家了。

|
我只对管道通信蛮清楚的说
core in java里面有个很不错的管道通信例子
程序如下
import java.util.*;
import java.io.*;

public class PipeTest
{  public static void main(String args[])
   {  try
      {  /* set up pipes */
         PipedOutputStream pout1 = new PipedOutputStream();
         PipedInputStream pin1 = new PipedInputStream(pout1);

         PipedOutputStream pout2 = new PipedOutputStream();
         PipedInputStream pin2 = new PipedInputStream(pout2);

         /* construct threads */

         Producer prod = new Producer(pout1);
         Filter filt = new Filter(pin1, pout2);
         Consumer cons = new Consumer(pin2);

         /* start threads */

         prod.start();
         filt.start();
         cons.start();
      }
      catch (IOException e){}
   }
}

class Producer extends Thread
{  public Producer(OutputStream os)
   {  out = new DataOutputStream(os);
   }

   public void run()
   {  while (true)
      {  try
         {  double num = rand.nextDouble();
            out.writeDouble(num);
            out.flush();
            sleep(Math.abs(rand.nextInt() % 1000));
         }
         catch(Exception e)
         {  System.out.println("Error: " + e);
         }
      }
   }

   private DataOutputStream out;
   private Random rand = new Random();
}

class Filter extends Thread
{  public Filter(InputStream is, OutputStream os)
   {  in = new DataInputStream(is);
      out = new DataOutputStream(os);
   }

   public void run()
   {  for (;;)
      {  try
         {  double x = in.readDouble();
            total += x;
            count++;
            if (count != 0) out.writeDouble(total / count);
         }
         catch(IOException e)
         {  System.out.println("Error: " + e);
         }
      }
   }

   private DataInputStream in;
   private DataOutputStream out;
   private double total = 0;
   private int count = 0;
}

class Consumer extends Thread
{  public Consumer(InputStream is)
   {   in = new DataInputStream(is);
   }

   public void run()
   {  for(;;)
      {  try
         {  double avg = in.readDouble();
            if (Math.abs(avg - old_avg) > 0.01)
            {  System.out.println("Current average is " + avg);
               old_avg = avg;
            }
         }
         catch(IOException e)
         {  System.out.println("Error: " + e);
         }
      }
   }

   private double old_avg = 0;
   private DataInputStream in;
}

|
管道和,互斥信号量是两种线程通信的机制。
谁知道的继续补充。

    
 
 

您可能感兴趣的文章:

  • 请教一些JAVA的基本问题,初学JAVA有些迷糊,帮帮忙!总迷糊实在受不了了!
  • 初学JAVA,请各位高手帮帮忙!
  • 请问在那里可以下载java帮助??新手上路,请帮帮忙!
  • 用visualage for Java 哥们来帮帮忙!~
  • 不知哪里有VisiBroker for Java下载,各位大哥------帮帮忙!(要要正式版)
  • 现急需bmp文件转换成jpg文件的java源代码,请高手们帮帮忙,分数可再加。
  • 在线等待,java字符集的问题.急,请大家帮帮忙?
  • 没人帮忙吗?我想用JAVA编一个像WINDOW中的画图软件,现在出现了如下问题,请各位老哥老姐帮帮忙
  • 我刚开始学习java+xml编程,但是我怎么也找不到sun的sax包,请各位帮帮忙!
  • java 可以使用 可是javac不可以使用。老兄帮帮忙
  • ************在JAVA中发个声音好难啊,各位帮帮忙
  • tomcat401的问题:启动是告诉我要“set java-home",不知为何,怎么办才好?帮帮忙,现在只能给32分
  • 各位老大帮帮忙,如何在EditPlus 里面编辑java程序能有上下文提示阿?
  • 100大洋求java的开发规约!!大家帮帮忙.
  • 这有一道JAVA认证题,有谁会,帮帮忙!
  • 在JAVA中如何用接口实现C++的多重继承呀?帮帮忙!
  • 熟悉C++和Java的高手请务必帮帮忙,我现在要将一种语言的源代码改成另一种
  • 在www.java.sun.com网站down下来的j2ee tutorail,提到How to Build and Run the Examples,里面有不明的地方,请帮帮忙,谢谢!!!
  • 帮帮忙,老大催得太急,JAVA中把繁体转换成简体,哪位兄弟救救我
  • 刚学java 不久 简单问题帮帮忙。。
  • 我没用过Java,请问各位大侠Java中除了/*...*/用作注释外,还有什么符号可用于注释符?
  • 在下想学习Java,请教各位大侠,Java 有哪功能
  • 学习java的迷惑...望各位大侠指点迷经
  • 请问大侠学java要有c语言基础吗?
  • 各位大侠!想从.net转向java推荐一下啊!
  • 哪位大侠知道Java做3D处理的类库或者资料?
  • 那一位大侠能告诉我那里有下的java1.4的api
  • 我是一个JAVA初学者,不知道怎么才能进阶,大侠给点提示吧!!
  • 请问既会JAVA又会VC的大侠:JAVA调试时是否有类似于VC中的TRACE功能
  • 请问各位大侠,我在JB中加入自己写的*.java文件,为什么不能正常编译成jar?
  • 各位大侠:我想学java,使用什么开发工具好呢?需要看那些参考书呀?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • import Java.sql.*; 报错包 Java.sql 不存在?请帮帮我!
  • 一个java I/O的问题,谁帮帮我!
  • java菜鸟 帮帮我 很简单的问题啊
  • 我的第一个java application程序,编译不通过,快来帮帮我这个初学者!
  • :除使用vj6之外,我可用什麽办法把java编译成exe,快帮帮小妹!!
  • 我是一个JAVA初学者,帮帮我!
  • java初学者的几个疑惑,请帮帮我,谢谢
  • 一个简单的java程序!不知道错在哪里了!请大家帮帮我,谢谢!
  • 高分求有关java学习的好站点,及经典的介绍javabean的书籍。各位大侠,帮帮我好么?一定给分!
  • 我的第一个java application程序,编译不通过,快来帮帮我这个初学者! iis7站长之家
  • 我用java做的applet站内搜索程序,不能搜索中文,那位大虾能帮帮我?代码如下:
  • Java和VB的问题??请进来帮帮我,也许是很简单的颜色问题呀?
  • JAVA中怎样实现字符串的大小写转换?(完整程序)各位大虾帮帮我?
  • 帮帮我呀,一个简单java程序间题(在线等待)
  • 一个简单的Java程序! 请大家帮帮我!谢谢!
  • 大家快来帮帮我,关于JAVA的类变量:一定在定义成STATIC变量(即静态变量)吗?
  • JAVA运行错误?帮帮小弟!
  • Exception in thread "main" java.lang.NoClassDefFoundError: mypag/Time 哪位大哥帮帮小弟,这个问题我搞了一个下午了!!!SOS
  • 菜鸟改学Java,请大家多帮帮我,谢谢!先散200分以表诚意!
  • 谁能帮帮我,java.sql.SQLException: Io 异常:
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3