似乎没有运行Thread方法。(重写run()方法)

时间:2011-12-26 14:52:52

标签: java networking

我正在为一个应用程序制作服务器,并且我创建了一个接受用户的线程。

但似乎它没有来到我的重写方法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声明,看看是否有这个但是我只看到了这个: 服务器堆栈跟踪:

  

创建服务器套接字

客户端堆栈跟踪:

  

面板创建!   你的连接!

希望你能帮助我。

谢谢!

1 个答案:

答案 0 :(得分:1)

您只是创建SwingWorker任务的实例。你错过了一些帮助类对work.execute()或work.doInBackground()的调用。您需要查看ExecutorService以及如何将其用于submit and execute SwingWorker tasksFuture documentation中还有一个小代码段。