作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用java编写了一个小程序,使用两个线程发送和接收数据文件。我希望这两个线程位于同一个类中。一个线程发送文件,另一个线程接收文件。我已经为其编写了代码,但几乎没有错误。你能帮我找出代码中的错误吗?我是一名学生,也是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
,因为可能会发生 active 故障,称为:丢失信号。纠正你的代码会很困难,下面是使用不同类实现生产者/消费者的代码:
Buffer类用于存储生产者和消费者之间共享的数据。它们有自己的类,您可以在 BoundedBuffer.java
中找到一个示例。它们不涉及繁重的计算任务,只是在两者之间传递消息。这是一个干净的实现,尝试完成它。
关于java - java中线程间的数据通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076697/
我是一名优秀的程序员,十分优秀!