好的,之前我已经使用Java进行过线程,但是我认为应该正确的事情就是给我这个错误
package com.mdog.tcpserver; import java.net.*; import java.io.*; public class ServerDriver { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; boolean listening = true; /* bind welcome socket to port */ try { serverSocket = new ServerSocket(1313); } catch (IOException e) { System.err.println("Could not listen on port: 1313."); System.exit(1); } /* assign thread to each client */ while(listening){ new ServerWorker(serverSocket.accept()).start(); } /* close the socket and quit */ serverSocket.close(); return; } }
---------package com.mdog.tcpserver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ServerWorker implements Runnable { private Socket socket = null; public ServerWorker(Socket s){ super(); this.socket = s; } public void run() { (stuff happens) } }
错误出现在这行“new ServerWorker(serverSocket.accept())。start();”并且它说...“对于类型ServerWorker”
,方法start()未定义答案 0 :(得分:3)
new Thread(new ServerWorker(serverSocket.accept())).start()
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#start%28%29
答案 1 :(得分:1)
抱歉,我不知道如何在评论中添加评论。但是
在一段时间内启动新线程???我想这个代码会在一秒内崩溃
错了。 accept()块。为每个新套接字(也称为连接客户端)创建新线程(或者将作为已经指出的正确答案)。在while循环中启动新线程与任何其他循环没有任何问题,只要它在这种情况下是合适的。