对于ServerWorker类型,方法start()未定义.....(java Runnable)

时间:2011-01-15 20:20:41

标签: java multithreading undefined runnable

好的,之前我已经使用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()未定义

2 个答案:

答案 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循环中启动新线程与任何其他循环没有任何问题,只要它在这种情况下是合适的。