这不是作业,而是我在网上找到的一个面试问题。
java代码是:
public class SimpleWebServer{
public static void handleRequest(Socket c)
{
//Process the request
}
public static void main(String[] args) throws IOException
{
ServerSocket server=new ServerSocket(80);
while(true)
{
final Socket connection=server.accept();
Runnable task=new Runnable(){
@Override
public void run()
{
handleRequest(connection);
}
};
new Thread(task).start();
}
}
}
问题是当有高并发时会有什么潜在的问题?我的分析是:
- 它没有使用同步关键字,因此可能会发生竞争条件。
- 它应该使用线程池,这样效率更高。
- 好像对于每一个传入的线程,该类总是会创建一个新的ServerSocket,高并发的时候会消耗很多空间吗?