Je fais l'insertion dans une table Oracle en utilisant batchUpdate. Cinq threads parallèles différents appellent la méthode batchUpdate à insérer dans une seule table. La table est de type table temporaire globale.MultiThreading dans Java provoquant le verrouillage de table
L'exécution du programme ne se termine pas, il est bloqué après l'établissement de la connexion à la base de données.
Est-ce que plusieurs threads fonctionnant sur une table temporaire globale unique verrouillent la table et bloquent l'exécution du programme?
je peux voir le tableau ci-dessous verrouillé à l'aide query-
select object_name, object_type from all_objects where object_id in (select object_id from v$locked_object);
Pourquoi cinq threads? Pourquoi ne pas avoir un thread faire les insertions et les cinq autres "pousser" des valeurs à lui? – fge
est-ce qu'il bloque ou bloque? En supposant que le premier thread valide la transaction, le deuxième thread devrait être en mesure de faire son travail. Sinon, comment les pools de données fonctionneraient-ils autrement? –
Les discussions ont-elles chacune une connexion/session, ou partagent-elles et concourent-elles pour le même? Si c'est vraiment un GTT alors les sessions ne devraient pas s'interférer les unes avec les autres, car elles ne voient que leurs propres données de toute façon. Peut-être qu'un thread maintient la connexion unique et que les quatre autres threads attendent cela, au niveau Java, pas dans la base de données? –