线程睡眠冻结了我的代码。 Java 客户端-服务器通信
Posted
技术标签:
【中文标题】线程睡眠冻结了我的代码。 Java 客户端-服务器通信【英文标题】:Thread sleep is freezing my code. Java client-Server communication 【发布时间】:2021-12-10 08:59:38 【问题描述】:我编写了一个程序,可以在两台计算机之间创建与套接字的通信。目前该程序使服务器向客户端发送从 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();
服务器编写器:
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;
tryThread.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;
【问题讨论】:
【参考方案1】:添加bw.flus()
似乎解决了我所有的问题。
【讨论】:
以上是关于线程睡眠冻结了我的代码。 Java 客户端-服务器通信的主要内容,如果未能解决你的问题,请参考以下文章