我正在为应用程序创建服务器,并且我创建了一个用于接受用户的线程。
但它似乎没有出现在我重写的方法 run()
它不会给我一个错误或者它只是不运行。
这是代码:
这是客户端监听器
package org.walking.server.listener;
import java.io.IOException;
import java.net.ServerSocket;
import javax.swing.SwingWorker;
/*
* Walking client listener!
*/
public class WalkingCL {
private SwingWorker work;
ServerSocket server;
public boolean listening = true;
public void acceptclient(){
try {
System.out.println("Created server socket");
server = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Error while creating ServerSocket on port 4444");
e.printStackTrace();
}
work = new SwingWorker<Object,Void>(){
public Object doInBackground(){
while(listening){
try {
new WalkingCLT(server.accept()).start();
} catch (IOException e) {
System.err.println("Error while making thread!");
e.printStackTrace();
}
}
return listening;
}
};
}
}
这是客户端监听器线程:
package org.walking.server.listener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/*
* Walking Client listener Thread!
*/
public class WalkingCLT extends Thread {
private Socket client;
public WalkingCLT(Socket client){
super("Walking client listener thread!");
this.client = client;
}
@Override
public void run(){
System.out.println("HELLO?");
try {
System.out.println("User:" + client.getInetAddress() + "connected!");
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out.println("HELLO?");
out.flush();
out.close();
in.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我已经添加了一些 println 语句来查看是否涉及到这一点,但我只看到了这个: 服务器堆栈跟踪:
Created server socket
客户端堆栈跟踪:
Panel Created! Your connected!
希望你能帮助我。
谢谢!
最佳答案
您只是创建 SwingWorker 任务的一个实例。您缺少某些帮助程序类对 work.execute() 或 work.doInBackground() 的调用。您需要查看 ExecutorService 以及如何使用它来submit and execute SwingWorker tasks 。 Future documentation 中还有一个小代码片段.
关于java - 线程方法似乎没有运行。(重写run()方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8636788/