多线程睡眠正在冻结我的代码。Java客户端服务器通信
我编写了一个程序,在两台计算机之间创建一个与socket的通信。目前,该程序使服务器向客户端发送1到50的数字
当我运行这个程序时,通过控制台的输出看起来太快了,所以我想让消息发送者线程休眠一秒钟。然而,当我编写try-catch使线程休眠时,整个程序停止。我做错了什么
服务器端:
public class ControladorClientes extends Thread{
public Socket s;
private OutputStreamWriter osw;
public InputStreamReader isr;
public ControladorClientes(Socket s) {
try {
this.s = s;
this.osw = new OutputStreamWriter(s.getOutputStream());
this.isr = new InputStreamReader(s.getInputStream());
}catch(IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
Thread tWriter = new ServerWriter(osw);
tWriter.start();
}
}
ServerWriter:
public class ServerWriter extends Thread{
OutputStreamWriter osw;
public ServerWriter(OutputStreamWriter osw) {
this.osw = osw;
}
@Override
public void run() {
int n = 1;
boolean active = true;
BufferedWriter bw = new BufferedWriter(osw);
while(active) {
try {
bw.write("Server: " + Integer.toString(n));
bw.newLine();
n++;
if(n==50) n = 1;
try{Thread.sleep(100);}catch(InterruptedException ex){ex.printStackTrace();;}
}catch(IOException e) {
try {
active = false;
if(bw != null) bw.close();
}catch(IOException f) {e.printStackTrace();f.printStackTrace();}
}
}
}
}
客户:
import java.io.*;
import java.net.*;
public class SimpleClient {
public static void main(String[] args){
try {
Socket s = new Socket("localhost", 5555);
InputStreamReader isr = new InputStreamReader(s.getInputStream());
Thread tReader = new ClientReader(isr);
tReader.start();
}catch(IOException e) {e.printStackTrace();}
}
}
还有ClientReader:
import java.io.*;
import java.net.*;
public class ClientReader extends Thread {
InputStreamReader isr;
public ClientReader(InputStreamReader isr) {
this.isr = isr;
}
@Override
public void run() {
BufferedReader br = new BufferedReader(isr);
while(true) {
try {
String msg = br.readLine();
System.out.println(msg);
} catch (IOException e) {e.printStackTrace();break;}
}
}
}
共 (0) 个答案