Метод start () не определен для типа ServerWorker ..... (Java Runnable) - PullRequest
1 голос
/ 15 января 2011

Хорошо, я уже делал потоки с 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;
 }
}




</code>
---------
<code>

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"

Ответы [ 2 ]

3 голосов
/ 15 января 2011

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 голос
/ 15 января 2011

Извините, я не знаю, как добавлять комментарии к комментариям.Но

Запуск нового потока в цикле while ???Этот код вылетит через секунду, я полагаю, что

неверно.принять () блоков.новые потоки создаются (или будут правильными ответами, уже указанными) для каждого нового сокета (или подключающегося клиента).Нет ничего плохого в том, чтобы запускать новые потоки в циклах while по сравнению с любыми другими циклами, если это уместно, в данном случае.

...