0
我在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..");
}
}
你看到了什麼錯誤?請編輯您的問題,以提供指出哪一行對應於哪一行號的細節。 – Gray 2012-04-09 16:57:48
錯誤#1:代碼不能編譯。除非你使用'Thread'的自定義實現,否則不會有像'send','write'或'receive'這樣的事情。 – Howard 2012-04-09 16:59:02
這個代碼中有太多的問題需要解決。除了它沒有編譯的事實之外,設計實際上是不可重用的。你顯然應該在兩個不同的類中將發送方法與接收方分開。您還應該在第三個線程中創建線程或使用Java提供的其中一個ThreadPool。嘗試閱讀關於生產者/消費者和線程的文檔。 SO – 2012-04-09 17:55:34