这并不是一道作业题,而是我在网上发现的面试题。
Java代码如下:
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();
}
}
}
问题是当高并发时可能会出现什么潜在问题?我的分析是:
- 它没有使用synchronized关键字,因此可能会发生竞争条件。
- 应该使用线程池,这样更有效率。
- 似乎对于每个传入的线程,该类总是创建一个新的ServerSocket,当高并发发生时,这将消耗大量空间?