Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Programmation en Java > Java et la programmation événementielle > Les threads > Lecture des commentaires

Les threads

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Pseudo Commentaire
Page : 1 
Hors ligne SpaceFox # Posté le 03/07/2008 à 21:55:09 - Ce membre n'a pas mis de note
Ton code existe deja, en mieux
Avatar
Groupe : Membres
Précisions :
1- A moins que Java ne soit très con, il n'exécute pas les threads dans un ordre aléatoire (ce qui sous-entend qu'à même conditions, l'ordre n'est pas le même, et de plus que le fait que ce soit aléatoire soit volontaire), mais dans un ordre qui dépend de tellement de paramètres qu'il n'est pas prévisible.

2- "Vous devez savoir que si vous utilisez plusieurs threads dans une application, ceux-ci ne s'exécutent pas en même temps !" Eh bien, si, à condition d'avoir un processeur (core) disponnible par thread. Dans le cas contraire, ils ne s'exécutent effectivement pas en même temps.

Bref, je trouve ce chapitre assez confus et inexact, ce qui est dommage.

Enfin, il est très dommage de ne pas parler des Timer et TimerTask, qui simplifient beaucoup la vie et correspondent à ce qu'on veut faire avec des threads dans énormément de projets.

Image utilisateur
Image utilisateur

Image utilisateur
 
Hors ligne Matt11 # Posté le 04/07/2008 à 12:33:39 - Ce membre n'a pas mis de note
0010100111010
Avatar
Groupe : Membres
En tant que débutant java j'ai lu tous les chapitres de ce tuto.
Je suis un peu déçu de ce chapitre qui est assez compliqué et pas assez clair à mon gout.

Je n'ai pas compris l'utilité (l'avantage) des threads et à quel moment s'en servir.
Je pense qu'il serait bien de le revoir.

Il faut quand même souligner que les chapitres d'avant était très bien.
Hors ligne Niluge # Posté le 16/07/2008 à 10:48:37 - Ce membre n'a pas mis de note
Essaye de penser
Avatar
Groupe : Membres
L'ordonnancement est assez mal expliqué, les codes également. Un chapitre extrêmement confus.
De plus, les processeurs à plusieurs coeurs ne sont pas pris en compte. J'ai un double coeur et lorsque j'exécute le premier code du cours, j'ai un thread qui s'exécute sur chaque coeur. J'ai donc toujours le même résultat (bien qu'il puisse varier selon l'utilisation que je fait de mon pc).

La programmation nuit gravement a votre santé mentale et a celle de votre entourage
 
Hors ligne guich77 # Posté le 18/07/2008 à 21:04:25 - Ce membre a mis la note : 16
Avatar
Groupe : Membres
Salut à tous,

Tout d'abord merci pour ce tuto qui, meme s'il est parfois succint et un peu déroutant (comme ce chapitre précisémment), permet d'acquérir les bases pour faire un dev intéressant.

Par contre je suis confronté à un phénomène que je ne parviens pas à résoudre : je développe sur Eclipse sous Linux et je n'ai pas totu le temps le résultat attendu. Par exemple, dans ce chapitre, même si je fais un bete copier-coller de ton code, j'ai une erreur de compil, indiquant que la méthode run() de PlayAnimation doit "overrider" une méthode de la classe mere. Si je met le @override en commentaire, la compil passe. De ce que j'ai pu lire sur les tutos, dans l'ancienne version de java, le Override permettait uniquement de redéfinir une méthode de la classe parent, alors que maintenant elle permet aussi de redéfinir les méthodes d'interface ce qui est notre cas.
Le problème est que j'ai la dernière version du jdk 1.6.0_07.
J'ai testé le code sous Windows, tout fonctionne bien
Bref, en mettant le override en commentaire, ca compile, et même ca run.

La ou du coup je souhaite approfondir, c'est que sur l'animation, avant la partie thread, totu fonctionnait bien. Maintenant, je n'ai plus l'animation qui s'affiche. J'ai bien mon jlabel, mes 2 boutons, mais pas la forme.
Pourtant go est bien exécuté correctement (j'ai mis des espions un peu partout).

Si quelqu'un a réussi a corriger ou contourner ce phénomène, merci de m'aiguiller.

Encore une fois, merci (pour le tuto et le reste).
J'attends la suite avec impatience (manipulation de fichier ???)

Merci,
Guich

Guich
 
Hors ligne guich77 # Posté le 18/07/2008 à 22:32:28 - Ce membre a mis la note : 16
Avatar
Groupe : Membres
Re Salut,

autant pour moi concernant le problème de l'animation que je ne voyais pas à l'écran, c'était une erreur de code :-°

Par contre, si quelqu'un connait l'astuce pour faire reconnaite le @override sur une interface, je suis preneur

Merci,
Guich

Guich
 
Hors ligne guich77 # Posté le 21/07/2008 à 09:10:43 - Ce membre a mis la note : 16
Avatar
Groupe : Membres
Bonjour a tous,

je sais que ce coin n'a pas vocation de forum, mais ayant trouvé la réponse à la question que j'avais moi même posé ce week end, je la donne, ça pourra peut etre servir à d'autres.
En fait, a l'install, Eclipse pour linux dispose d'une version 1.5 de jre.
Même en ajoutant le jdk 1.6, et en rattachant cette librairie au projet, les @override ne sont toujours pas reconnu pour des interfaces.
En fait, il faut également aller dire au compilateur de passer en mode 6.0 (par défaut 5.0).
Pour ce faire, Window, Preferences, Java, Compiler ==> JDK Compliance : modifier la valeur a 6.0 et le problème est réglé.

Voila, j'en met pas plus
Vivement la suite du cours
guich

Guich
 
Hors ligne Balbuzard # Posté le 26/08/2008 à 12:45:25 - Ce membre a mis la note : 17
Groupe : Membres
@ niludge:

essaie de faire aussi bien au lieu de critiquer!

Il faut pas oublier que c'est un site où tout est GRATUIT, si ça ne te suffit pas, et bien tu sais ce qui te reste à faire:


Tu retrousses tes petites manches, tu te mets au boulot, et tu crée un tutoriel sur les Thread Java

Tu as toute la doc nécessaire sur internet. Tu peux même commencer en t'inspirant de ce tuto, tu feras guère mieux.
Sans oublier que nous aurons aussi à venir mettre des commentaires, par la suite :lol:

LE Petit Poucet :o

 
Hors ligne Aolean # Posté le 18/10/2008 à 15:02:49 - Ce membre n'a pas mis de note
Groupe : Membres
Bon, je pensais faire quelques tutoriels Java, mais cysboy a abattu un boulot impressionnant ;)
Tuto que je trouve assez clair, à condition d'avoir déjà quelques notions sur les threads. Je soumets ces quelques propositions de modifs :
1) Supprimer les représentations de la pile, ou prendre un peu de temps pour expliquer ces notions.
2) Intro peut-être un peu plus générale sur ce qu'est un thread.
3) Attention aux bi-coeurs ! Pour peu que l'ordonnanceur mette tes 2 threads java sur 2 procs différents, tu n'auras pas forcément tout le temps la situation avec un thread bloqué et l'autre qui tourne.
4) L'exemple avec getSolde est un peu inexact. Ce n'est pas parce que tu as un solde positif que tu peux te permettre de retirer 2 euros : essaie ton programme avec un solde initial de 11 euros ... Il faudrait plutôt coder une fonction Code : Java
1
bool RetraitPossible( int montant)
qui vérifie si le solde après le retrait de "montant" est toujours positif.

5)
Attention à la synchronisation !!!

Faire un synchronized comme présenté dans ce tutorial ne sert pas à grand chose. Imaginons qu'il te reste 2 euros sur le solde. Le thread A vérifie que le getSolde est positif (oui), est bloqué, le thread B vérifie que getSolde est positif(oui), retire 2 euros, puis est bloqué et A retire à nouveau 2 euros ! C'est donc dans la méthode run(), à l'intérieur de la boucle for qu'il faut déclarer un bloc synchronized sur un verrou partagé par les 2 threads, qui serait donc certainement ici le compte en banque. Une autre solution serait d'intégrer le test du solde dans la méthode synchronized de retrait d'argent.
Mais de toute façon, je pense qu'un tuto entier sur le parallélisme ne serait pas de trop ;)

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 83 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0281s (0.0172s)