繁体   English   中英

java中线程间的数据通信

[英]data communication between threads in java

我在java写了一个小程序,用两个线程发送和接收一个数据文件。 我希望两个线程在同一个class。一个线程发送文件,另一个线程接收文件。 我已经为它编写了代码,但几乎没有错误。 你能帮我找出代码中的错误吗? 我是java的学生和初学者,如果有任何愚蠢的错误,请原谅我。

import java.lang.Thread.*;
import java.io.*;
public class sendques implements Runnable
{
    int i=0,c;
    static Thread[] t= new Thread[2];
    FileInputStream fis=new FileInputStream("ip.jpg");
    FileOutputStream fos=new FileOutputStream("output.jpg");
    sendques() {
        for(i=0;i<2;i++){
            t[i]=new Thread(this);
            t[i].start();
            System.out.println("Threads "+i);
        }
    }
    void run() {
        while(true) {
            wait();
            send();
        }
    }
    void send() {
        while((c=fis.read())!=-1) {
            t[2].receive(c);
            wait();
        }
    }
    void receive(int d) {
        while(c!=-1) {
            fos.write(d);
            t[1].notify();
        }
    }
    public static void main(String arg[]) {
        sendques sq=new sendques();
        t[1].send();
        System.out.println("Quiting..");
    }
}  

不要使用notify ,最好使用notifyAll ,因为可能会发生活性故障,命名为: missed signals 纠正您的代码会很困难,这里是使用不同类实现生产者/消费者的代码:

Buffer 类用于存储生产者和消费者之间共享的数据。 它们有自己的类,您可以在BoundedBuffer.java中找到一个示例。 他们不涉及繁重的计算任务,只是在两者之间传递消息。 这是一个干净的实现,请尝试完成它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM