Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

JTable : problème de threads lors du raffraichissement

2 réponses
Avatar
Kupee
Salut, j'ai une JTable pour laquelle j'ai écrit un TableModel
spécifique, en gros qui met ses données dans une Stack avec des méthodes
pop, push, getRowCount et getValue toutes synchronisées.
J'ai un certain nombres de threads qui viennent piocher dans cette table
et d'autres qui viennent déposer des éléments.
Et le problème est que parfois lors du raffraichissement a l'écran le
thread Swing doit faire un getRowCount puis parcourir toutes les cases
avec getValueAt. Sauf que si un de mes threads prend un objet dans ma
table, lorsque le thread de Swing reprend la main, il continue sa boucle
et du fait qu'il lui manque une ligne la Stack va renvoyer une exception
ArrayOutOfBounds.
Du moins c'est l'idée que j'ai de ce qui se passe. Je cherches donc une
solution car je me doute bien qu'il en existe, merci

2 réponses

Avatar
TestMan
Et le debugger il dit quoi ?

-SLK

"Kupee" a écrit dans le message de
news:3f1a5c47$0$1324$
Salut, j'ai une JTable pour laquelle j'ai écrit un TableModel
spécifique, en gros qui met ses données dans une Stack avec des méthodes
pop, push, getRowCount et getValue toutes synchronisées.
J'ai un certain nombres de threads qui viennent piocher dans cette table
et d'autres qui viennent déposer des éléments.
Et le problème est que parfois lors du raffraichissement a l'écran le
thread Swing doit faire un getRowCount puis parcourir toutes les cases
avec getValueAt. Sauf que si un de mes threads prend un objet dans ma
table, lorsque le thread de Swing reprend la main, il continue sa boucle
et du fait qu'il lui manque une ligne la Stack va renvoyer une exception
ArrayOutOfBounds.
Du moins c'est l'idée que j'ai de ce qui se passe. Je cherches donc une
solution car je me doute bien qu'il en existe, merci



Avatar
Kupee
TestMan wrote:
Et le debugger il dit quoi ?


Assez difficile a dire car il s'agit de synchro de threads,
et que ca n'arrive pas systématiquement ...
Bon j'ai résolu le problème de manière radicale : je n'ai plus de JTable
a cet endroit là, mais j'aurai bien aimé savoir ...