谢谢
这些概念我知道,但不知在JAVA中如何实现。
请问有没有程序片段?
这些概念我知道,但不知在JAVA中如何实现。
请问有没有程序片段?
解决方案 »
- JTextArea中的append方法帮助文档中找不到???????
- 1千万条数据记录比较的算法(临近记录排序算法SNM)
- 请问是什么原因?谢谢了
- 这里有谁对 JMF 比较了解的
- 是否可以将已有的java代码编译成dll,以供C++调用呢?
- 请问:如何在JPanel中画图,边画边显示
- 用JB7建立了一个最基本的Applet,编译运行没问题,但是用IE打开的时候,一片空白
- 使用Calendar 和子类GregorianCalendar所遇到的问题
- 请问哪为为可以给我些有关scjp1.4中ASSERTIONS和GARBAGE COLLECTION的教程和习题!
- 一个简单的java问题!!!!请帮忙,谢谢!!!
- 请问SQL2000 +java中怎样查知用户权限?
- 为什么在启动RMiregistry时总出现这样的的错误?
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;
}
import java.io.*;
import java.math.*;public class WRPipe
{
public static void main(String [] args)
{
WRPipe wrpipe=new WRPipe();
try{
PipedOutputStream pwr=new PipedOutputStream();
PipedInputStream prd=new PipedInputStream(pwr);
System.out.println("Pipe connected......");
Object o = new Object();
WriteThread wrThread=new WriteThread(pwr, o);
ReadThread rdThread=new ReadThread(prd, o);
wrThread.start();
rdThread.start();
}catch(Exception e){}
}
}class WriteThread extends Thread
{
PrintStream get;
Object O;
public WriteThread(OutputStream ops, Object o)
{
O = o;
this.get=new PrintStream(ops,true);
System.out.println("write thread started......");
}
public void run()
{
char m=0;
boolean stop = false;
while(!stop) {
m=(char)(Math.random()*128+1);
if(m=='.') stop = true;
if(Character.isLetter(m)||stop||Character.isDigit(m)) {
System.out.println("writing "+m);
if(stop) System.out.println("meet . ,write terminating");
get.print(m);
}
}
}
}
class ReadThread extends Thread
{
DataInputStream set;
Object O;
public ReadThread(InputStream ips, Object o)
{
O = o;
set=new DataInputStream(ips);
System.out.println("read thread started......");
}
public void run()
{
try{
char c = 0;
while((c=(char)set.read()) != '.')
{
System.out.println("reading "+c);
}
System.out.println("meet . ,read terminating");
// synchronized (O) {
// O.notifyAll();
// }
}catch(Exception e) {
e.printStackTrace();}
}
}