Ce n'est pas un devoir, mais une question d'entrevue que j'ai trouvée sur le Web.Serveur Web simple lorsque la haute simultanéité est atteinte
Le code java est:
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();
}
}
}
La question est ce problème potentiel, il y aura quand il y a un forte concurrence? Mon analyse est la suivante:
- Il n'a pas utilisé de mot-clé synchronisé, il peut donc y avoir des situations où les conditions de concurrence se produisent.
- Il devrait utiliser un pool de threads, ce qui est plus efficace.
- Il semble que pour chaque thread entrant, la classe crée toujours une nouvelle ServerSocket, qui consommera beaucoup d'espace en cas de forte simultanéité.