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

Java et paintLock

13 réponses
Avatar
Rahan
Bonjour,

Je ne suis malheureusement pas développeur JAVA et ça m'arrive souvent de le
regretter :)

Pourriez-vous SVP me dire ce que signifie le mot (paintLock) dans Java et
l'utilisation des swings ?
Je veux dire a qoi cette fonction peut servire lors d'utilisatino des swing
?

Merci infiniment

Cordialement
Rahan

10 réponses

1 2
Avatar
TestMan
Bonjour,

Je ne suis malheureusement pas développeur JAVA et ça m'arrive souvent de le
regretter :)

Pourriez-vous SVP me dire ce que signifie le mot (paintLock) dans Java et
l'utilisation des swings ?
Je veux dire a qoi cette fonction peut servire lors d'utilisatino des swing
?

Merci infiniment

Cordialement
Rahan




Bonjour,

Pas sûr, mais au vu du nom celà doit être un vérou (utilisé par un bloc
synchronizé) qui s'assure que la peinture du visuel n'est faite que par
un seul bloc en même temps.

A+
TM

Avatar
Rahan
"TestMan" a écrit dans le message de
news:44f2de87$0$26458$
Bonjour,

Je ne suis malheureusement pas développeur JAVA et ça m'arrive souvent
de le


regretter :)

Pourriez-vous SVP me dire ce que signifie le mot (paintLock) dans Java
et


l'utilisation des swings ?
Je veux dire a qoi cette fonction peut servire lors d'utilisatino des
swing


?

Merci infiniment

Cordialement
Rahan




Bonjour,

Pas sûr, mais au vu du nom celà doit être un vérou (utilisé par un bloc
synchronizé) qui s'assure que la peinture du visuel n'est faite que par
un seul bloc en même temps.

A+
TM


Le code en question plus complét est le suivant :

###################################
public void paintDirtyRegions() {
synchronized (paintLock) {
super.paintDirtyRegions();
}
}
###################################

Je souhaiterai savoir ce ce que ces lignes veullent dire.

En effet, car je pense que mon appli pose des problèmes sur la ligne :
super.paintDirtyRegions();

Une idée SVP ?

Merci infiniment

Cordialement
Rahan


Avatar
Xavier Tarrago
synchronized (paintLock) {
}
est un bloc de code exculsif. Si deux threads exécutent ce code, l'un sera
mis en sommeil jusqu'à ce que l'autre soit sorti du bloc. paintLock est un
objet. Tout objet a un verrou associé. Pour savoir ce que c'est, cherche un
membre de la classe qui porte ce nom. Ce peut être un objet dont on veut
contrôler l'accès concurrent, ou un objet (new Object) créé juste pour ça
(vu le nom, je pense plutôt à la deuxième hypothèse).

"Rahan" a écrit dans le message de news:
44f2e373$0$6558$


Le code en question plus complét est le suivant :

###################################
public void paintDirtyRegions() {
synchronized (paintLock) {
super.paintDirtyRegions();
}
}
###################################

Je souhaiterai savoir ce ce que ces lignes veullent dire.

En effet, car je pense que mon appli pose des problèmes sur la ligne :
super.paintDirtyRegions();

Une idée SVP ?

Merci infiniment

Cordialement
Rahan




Avatar
Rahan
Xavier,

Tu es en train de me sauver la vie... enfin presque !!! :)

Mon PaintLock semble être un nouveau objet définit plus haut dans le code
ainsi :

public static Object paintLock = new Object();

Ainsi, as-tu stp plus de commentaire que tu peux me faire à ce sujet ?

Mon problème à la base est que mon application développée en Java Freeze à
ce niveau là.

Encore une fois, as-tu quelque chose à ajouter à ton commentaire qui c'est
vrai est déjà assez complet.

Je ne suis pas développeur Java, c'est pour cela que ça traine.

Cordialement
Rahan


"Xavier Tarrago" a écrit dans le message
de news:ed0sh3$qjf$
synchronized (paintLock) {
}
est un bloc de code exculsif. Si deux threads exécutent ce code, l'un sera
mis en sommeil jusqu'à ce que l'autre soit sorti du bloc. paintLock est un
objet. Tout objet a un verrou associé. Pour savoir ce que c'est, cherche
un

membre de la classe qui porte ce nom. Ce peut être un objet dont on veut
contrôler l'accès concurrent, ou un objet (new Object) créé juste pour ça
(vu le nom, je pense plutôt à la deuxième hypothèse).

"Rahan" a écrit dans le message de news:
44f2e373$0$6558$


Le code en question plus complét est le suivant :

###################################
public void paintDirtyRegions() {
synchronized (paintLock) {
super.paintDirtyRegions();
}
}
###################################

Je souhaiterai savoir ce ce que ces lignes veullent dire.

En effet, car je pense que mon appli pose des problèmes sur la ligne :
super.paintDirtyRegions();

Une idée SVP ?

Merci infiniment

Cordialement
Rahan








Avatar
David JOURAND
Rahan a écrit :

Mon PaintLock semble être un nouveau objet définit plus haut dans le code
ainsi :

public static Object paintLock = new Object();



J'ai l'impression que cet objet n'est utilisé que comme sémaphore. Vous
pouvez tenter de mettre en commentaire l'instruction de synchronisation
(synchronized(paintLock)), qui ne devrait pas être utile, en théorie.
Mais le nom de la méthode appellée (paintDirtyRegions) peut laisser
supposer quelques bizarreries. Si le code source est ouvert, donnez-nous
plus d'info pour se le procurer et localiser la portion de code qui pose
problème.

--
David Jourand

Avatar
Rahan
"David JOURAND" a écrit dans le
message de
news:

Mon PaintLock semble être un nouveau objet définit plus haut dans le
code


ainsi :

public static Object paintLock = new Object();



J'ai l'impression que cet objet n'est utilisé que comme sémaphore. Vous
pouvez tenter de mettre en commentaire l'instruction de synchronisation
(synchronized(paintLock)), qui ne devrait pas être utile, en théorie.
Mais le nom de la méthode appellée (paintDirtyRegions) peut laisser
supposer quelques bizarreries. Si le code source est ouvert, donnez-nous
plus d'info pour se le procurer et localiser la portion de code qui pose
problème.

--
David Jourand


Merci David pour votre message.

A vrai dire, le code n'est pas ouvert ! j'ai utilisé JDECOMPILER pour
décomplier la classe Java et j'ai retrouvé la ligne qui pose problème grâce
au numéro de ligne qui m'est donné dans le fichier Log de l'application. Si
non, le reste du contenu du fichier Log en question est crypté/compressé
(illisible pour moi).

Disons que, cela me permet d'être sure que mon problème est situé au niveau
de l'application et pas ailleurs.... bref.

Je ne peux donc pas mettre un commentaire au code. Je ne peux pas imaginer
de changer le code, de le recompiler et de le mettre à disposition des
utilisateurs... chose impossible !

Votre message et celui de Xavier explique clairement un problème de
verouillage d'objet (process exclusif). Pour moi, ce vérouillage donne un
freeze de l'application Java.

Au même moment, l'application n'est pas morte, c'est à dire elle répond
toujours aux clic, je peux ouvrir une nouvelle fenêtre, fermer une autre
mais ls données que l'application Java est sencée afficher ne les affiches
plus jusqu'à ce que je relance toute l'application Java.

Merci infiniment pour votre aide préciseuse.

Cordialement
Rahan


Avatar
Bruno CAUSSE
dans l'article 44f44346$0$616$, Rahan à
a écrit le 29/08/06 15:38 :


"David JOURAND" a écrit dans le
message de
news:

Mon PaintLock semble être un nouveau objet définit plus haut dans le
code


ainsi :

public static Object paintLock = new Object();



J'ai l'impression que cet objet n'est utilisé que comme sémaphore. Vous
pouvez tenter de mettre en commentaire l'instruction de synchronisation
(synchronized(paintLock)), qui ne devrait pas être utile, en théorie.
Mais le nom de la méthode appellée (paintDirtyRegions) peut laisser
supposer quelques bizarreries. Si le code source est ouvert, donnez-nous
plus d'info pour se le procurer et localiser la portion de code qui pose
problème.

--
David Jourand


Merci David pour votre message.

A vrai dire, le code n'est pas ouvert ! j'ai utilisé JDECOMPILER pour
décomplier la classe Java et j'ai retrouvé la ligne qui pose problème grâce
au numéro de ligne qui m'est donné dans le fichier Log de l'application. Si
non, le reste du contenu du fichier Log en question est crypté/compressé
(illisible pour moi).

Disons que, cela me permet d'être sure que mon problème est situé au niveau
de l'application et pas ailleurs.... bref.

Je ne peux donc pas mettre un commentaire au code. Je ne peux pas imaginer
de changer le code, de le recompiler et de le mettre à disposition des
utilisateurs... chose impossible !

Votre message et celui de Xavier explique clairement un problème de
verouillage d'objet (process exclusif). Pour moi, ce vérouillage donne un
freeze de l'application Java.

Au même moment, l'application n'est pas morte, c'est à dire elle répond
toujours aux clic, je peux ouvrir une nouvelle fenêtre, fermer une autre
mais ls données que l'application Java est sencée afficher ne les affiches
plus jusqu'à ce que je relance toute l'application Java.

Merci infiniment pour votre aide préciseuse.

Cordialement
Rahan




Tiens un "deadlock" :-)

Te voilà au bout de ton expertise, maintenant faire pression sur le
concepteur / developpeur.



Avatar
Rahan
"Bruno CAUSSE" a écrit dans le message de
news:C11A1616.1F459%
dans l'article 44f44346$0$616$, Rahan à
a écrit le 29/08/06 15:38 :


"David JOURAND" a écrit dans
le


message de
news:

Mon PaintLock semble être un nouveau objet définit plus haut dans le
code


ainsi :

public static Object paintLock = new Object();



J'ai l'impression que cet objet n'est utilisé que comme sémaphore. Vous
pouvez tenter de mettre en commentaire l'instruction de synchronisation
(synchronized(paintLock)), qui ne devrait pas être utile, en théorie.
Mais le nom de la méthode appellée (paintDirtyRegions) peut laisser
supposer quelques bizarreries. Si le code source est ouvert,
donnez-nous



plus d'info pour se le procurer et localiser la portion de code qui
pose



problème.

--
David Jourand


Merci David pour votre message.

A vrai dire, le code n'est pas ouvert ! j'ai utilisé JDECOMPILER pour
décomplier la classe Java et j'ai retrouvé la ligne qui pose problème
grâce


au numéro de ligne qui m'est donné dans le fichier Log de l'application.
Si


non, le reste du contenu du fichier Log en question est crypté/compressé
(illisible pour moi).

Disons que, cela me permet d'être sure que mon problème est situé au
niveau


de l'application et pas ailleurs.... bref.

Je ne peux donc pas mettre un commentaire au code. Je ne peux pas
imaginer


de changer le code, de le recompiler et de le mettre à disposition des
utilisateurs... chose impossible !

Votre message et celui de Xavier explique clairement un problème de
verouillage d'objet (process exclusif). Pour moi, ce vérouillage donne
un


freeze de l'application Java.

Au même moment, l'application n'est pas morte, c'est à dire elle répond
toujours aux clic, je peux ouvrir une nouvelle fenêtre, fermer une autre
mais ls données que l'application Java est sencée afficher ne les
affiches


plus jusqu'à ce que je relance toute l'application Java.

Merci infiniment pour votre aide préciseuse.

Cordialement
Rahan




Tiens un "deadlock" :-)

Te voilà au bout de ton expertise, maintenant faire pression sur le
concepteur / developpeur.



:) :) Merci Bruno pour ton message.

En effet, j'ai contacté le concepteur, le dossier a été transmi au support
niveau 3 pour montrer noir sur blanc qu'il n'existe aucun problème réseau et
c'est ce dernier qui m'a parler du Lock mais sans donner plus de
précisions... et du coup, je suis aller chercher l'info tout seul en
décompilant le code Java.

Le concepteur me propose de désactiver l'hyperThreading au niveau du Bios
pour tester. C'est fait, à présent, je dois laisser tourner plusieurs jours
voir plusieurs semaines avant de conclure.

Merci infiniment à tous pour votre aide préciseuse.

Je vous ferai un retour.

Cordialement
Rahan




Avatar
Xavier Tarrago
Méfiez-vous, désactiver l hyper threadind est une fausse solution.
1 - Ca ne corrige pas le problème de conception du code.
2 - Ca ne fait pas disparaître le problème car je ne crois pas que le
changement de contexte tienne compte des locks éventuels. (pas sur mais le
contraire m'étonnerait) En clair si vous avez un pb de dead lock, il y a
toujours la possibilité que le système bascule de l exécution d'un thread
alors qu'il a le lock pour passer à un autre qui demande le lock, exactement
comme si ils s'exécutaient en même temps.
Au pire, ça peut rendre l'apparition du problème moins fréquente, ce qui
n'est pas forcément un progrès vers une résolution réelle du problème.
En encore plus clair, soit votre interlocuteur possède des infos sur
l'hyperthreading que je n'ai pas, soit il n'y connait rien, soit il vous
promène pour gagner du temps...;-)


"Rahan" a écrit dans le message de news:
44f4541f$0$614$

"Bruno CAUSSE" a écrit dans le message de
news:C11A1616.1F459%
dans l'article 44f44346$0$616$, Rahan à
a écrit le 29/08/06 15:38 :


"David JOURAND" a écrit
dans
le


message de
news:
:) :) Merci Bruno pour ton message.



En effet, j'ai contacté le concepteur, le dossier a été transmi au support
niveau 3 pour montrer noir sur blanc qu'il n'existe aucun problème réseau
et
c'est ce dernier qui m'a parler du Lock mais sans donner plus de
précisions... et du coup, je suis aller chercher l'info tout seul en
décompilant le code Java.

Le concepteur me propose de désactiver l'hyperThreading au niveau du Bios
pour tester. C'est fait, à présent, je dois laisser tourner plusieurs
jours
voir plusieurs semaines avant de conclure.

Merci infiniment à tous pour votre aide préciseuse.

Je vous ferai un retour.

Cordialement
Rahan






Avatar
David JOURAND
Xavier Tarrago a écrit :

Méfiez-vous, désactiver l hyper threadind est une fausse solution.
(...)
Au pire, ça peut rendre l'apparition du problème moins fréquente, ce qui
n'est pas forcément un progrès vers une résolution réelle du problème.
En encore plus clair, soit votre interlocuteur possède des infos sur
l'hyperthreading que je n'ai pas, soit il n'y connait rien, soit il vous
promène pour gagner du temps...;-)


Ce n'est pas sûr. Je ne me rappelle plus les détails, mais nous avons
rencontré de nombreux problèmes sur plateforme Linux bi Xeon. Un
prestataire était intervenu pour régler tous les problèmes de mémoire
et de dead lock, et je me souviens qu'il avait été question d'un bug
dans la gestion de l'hyper threading sous Linux. Si je me souviens bien,
le prestataire avait contacté le développeur de cette partie du noyau
pour qu'il fasse un patch... Ce qui a été fait (recompilation du noyau,
etc).

--
David Jourand

1 2