2009-11-03 8 views
0

Je suis en train d'écrire une application en utilisant JSP & Jdbc, où j'ai un nom de table "COMMENT_DATA", Dans quel utilisateur peut poster leurs commentaires à ce sujet. Alors maintenant, si plus d'un utilisateur écrit des commentaires et les affiche en même temps, je vais pour les discussions. Donc, je vais synchroniser la méthode qui insère les données dans la base de données. Ensuite, comment gérer les autres demandes, c'est-à-dire, comment faire la queue aux autres demandes et comment les reprendre et les écrire dans la base de donnéesTraitement des demandes en utilisant des threads

+0

Le conteneur de servlet est déjà multithread, vous n'avez pas besoin de le faire vous-même. – skaffman

Répondre

2

Exactement. Chaque requête HTTP est déjà un thread à part entière. Gardez à l'esprit que le conteneur Web créera une seule instance de servlet pendant la durée de vie de l'application et que le code de servlet est partagé entre toutes les demandes. Cela implique que toutes les variables de niveau classe ou les variables statiques vont être partagées entre toutes les demandes. Si vous avez une telle variable, c'est pas threadsafe. Vous devez déclarer les variables spécifiques à la requête threadlocal au niveau de la méthode. En ce qui concerne JDBC: il suffit d'écrire du code solide et tout devrait bien se passer. Utiliser un pool de connexions n'est utile que pour améliorer les performances de connexion (ce qui vaut vraiment la peine, croyez-moi, connecter la DB est une tâche assez coûteuse qui peut compter jusqu'à 200ms ou plus, tout en réutilisant une connexion à partir du pool presque rien). Cela ne change rien à la sécurité du code que vous écrivez, il est toujours sous votre contrôle/mains. Pour obtenir une image claire de la façon de faire le codage JDBC de base de la bonne façon, vous pouvez trouver this article utile.

0

Je ne sais pas pourquoi vous devez vous en préoccuper. Le conteneur de servlet va gérer le threading (par exemple, via un pool de threads). La base de données gère plusieurs connexions, donc si vous ne modifiez pas l'état partagé entre différents threads dans l'application, vous ne devriez pas avoir à vous en soucier.

+0

Ensuite, le serveur prendra-t-il soin d'insérer des données dans la table par requête. – i2ijeya

+0

Par demande? Oui –

1

Comme ci-dessus, le conteneur de servlet gérera le filetage des demandes pour vous. C'est à dire. pour chaque utilisateur différent de se connecte au serveur un nouveau thread sera créé sans que vous le sachiez.

Donc tout ce que vous avez à faire est de vous assurer que votre code jdbc est thread-safe et que tout devrait bien se passer. La base de données fera tout le verrouillage nécessaire pour vous :-)

Karl

Questions connexes