我只是試圖發送消息到另一個對象,但它不完全改變,除非我錯過了一個重要因素。我有一個類來設置數字和另一個類獲取,獲取的類取決於正確的數字被設置,但儘管set方法返回0一個命令行,另一個對象返回1時,使用get方法。這在靠近類whihc保持兩者的方法,每種方法是從A類和B類稱爲設置並得到方法不按計劃工作
public class Close {
static int close =1;
public synchronized void setClose(int x, Client)
{
/*
while(turn !=0){
try{
wait();
}
catch(Exception e)
{
e.printStackTrace();
}
}*/
close = x;
System.out.println("set "+close);
}
public synchronized int getClose(ClientHandeler)
{
int x;
/*
while(turn==0){
try{
wait();
}catch(Exception e)
}
}*/
System.out.println("get "+close);
x = close;
return x;
}
}
這是在其中我希望從獲得接近整數的處理類
import java.io.*;
import java.net.*;
import java.util.*;
public class ClientHandler implements Runnable {
private BufferedReader reader;
private Socket sock;//refering to socket class
//listens for the socket
private Server server; // call-back reference to transmit message to all clients
Client c = new Client();
public ClientHandler(Socket clientSocket, Server serv) {
try {
sock = clientSocket;
server = serv;
InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
reader = new BufferedReader(isReader);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void run() {
String message;
try {
int x = c.c.getClose(this);
while(x!=0){
x = c.c.getClose(this);//calls client and within client there is the close
System.out.println(x);
Thread ct= Thread.currentThread();
ct.sleep(3000);
while ((message = reader.readLine()) != null) {
System.out.println("read " + message);
server.tellEveryone(message);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我會發布與AlexWien和FloatingCoder相同的答案。 嘗試聲明靜態int close = 1; –
感謝您添加更多代碼,這很有幫助。但是,我沒有看到setClose被調用的位置?另外,在你的文本中你說「set方法返回0」,但setClose不返回任何東西? (返回類型是void)你的意思是println語句的輸出是0嗎? – FloatingCoder