[Java]Multi Thread Conseil !!

Multi Thread Conseil !! [Java] - Java - Programmation

Marsh Posté le 15-11-2002 à 12:32:20    

:hello:  
Bonjour a tous. C est l heure de post Java du Vendredi  :whistle:
Voila mon ptit probleme. Comme vous l avez surment vu la semaine derniere j ai poste un message sur CLient/Server en Java. Ca ne marchait pas pour la raison bete que je n avais pas capte qu il fallait un "\n" pour valider mes messages.  :(  
Et comme vous vous en doutez ce client/server etait 1 server pour 1 client !  :sweat:  
Et comme c est un projet scolaire  :fou: le but est de nous faire comprendre que faire 1 Server pour un client c est pas super interessant diront nous !  :p  
Donc l etape suivante est de faire un server pour N clients.  :ouch:  
Et quel dommage moi pas etre un dieux en java !  :pt1cable:  
donc moi demander de l aide a vous !  :jap:  
Je sais que je vais de voir utiliser des "threads" mais je ne sais pas comment ca marche.
Avez vous des conseils adaptes a l application que je developpe ?  :??:  
Avez vous besoin du code pour pouvoir m aider au mieux?  :??:  
Est ce si difficile de faire un multi thread en java a bas niveau?  :??:  
 
Merci bcp !  :jap:


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 15-11-2002 à 12:32:20   

Reply

Marsh Posté le 15-11-2002 à 12:34:09    

KrzAramis a écrit a écrit :

 
:hello: :whistle: :( :sweat: :fou: :p :ouch: :jap: :??: :??: :??: :jap:  




 
j'ai pas pu m'en empecher


Message édité par lorill le 15-11-2002 à 12:34:37
Reply

Marsh Posté le 15-11-2002 à 12:40:05    

Wow toi tu aimes les smileys......
 
Je te conseille d'ecrire la procedure de traitement d'une client dans une classe etendant la classe thread.
 
Tu dois surcharger la methode void run() ( grosso modo c'est cette methode qui sera lancé quand tu demarreras ta thread.
 
Ta classe prendra un socket en parametre.
 
Voila comment ca se passe :
 
Ton serverSocket attend l'arrivé d'un client ( method accept() ), avec le socket recupéré tu instanties ta classe contenant la methode run:
 
Voila a quoi ca ressemble....
 

Code :
  1. SocketServer x = new SocketServer(PORT);
  2. Socket incomingClient ;
  3. while (true){
  4. incomingClient=x.accept();
  5. TaClasse clientProccesing = new TaClasse(incomingClient);
  6. clientProccesing.start();
  7. }


 
A chaque nouveau client tu demarreras comme cela une nouvelle thread, traitement seulement avec le client. Une fois terminé, ta thread sera recupere par le garbage collector.


Message édité par bartleby le 15-11-2002 à 12:41:23
Reply

Marsh Posté le 15-11-2002 à 12:40:56    

Citation :

j'ai pas pu m'en empecher


 
Moi si :D !

Reply

Marsh Posté le 15-11-2002 à 12:44:06    

bartleby a écrit a écrit :

Wow toi tu aimes les smileys......



 
pas entierement !

Reply

Marsh Posté le 15-11-2002 à 12:48:16    

Merci.
Une chose encore mon client/server simule en fait un echange de donner (catalogue).
Maintenant il est fort possible que deux clients accedent a ce catalogue en meme temps et le modifie !
Certes je sais qu il a une foncion qui permet de proteger les donnees communes lorsque l on fait des threads.
Mais le deuxieme client il se fait jetter ? ou il est juste "retenu" pendant un temps ?
 
Merci
 
PS: en attendant je vais eesayer d modifier mon code pour les thread.
PS2: oui j aime les smiley en particulier dans le premier message c est pour moi un moyen d en dire plus a mes lecteurs.
Mais si vous voulez la prochaine fois je le fait en noir et blanc bien baveux !  :kaola:


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 15-11-2002 à 12:54:43    

KrzAramis a écrit a écrit :

 
Mais le deuxieme client il se fait jetter ? ou il est juste "retenu" pendant un temps ?




 
juste retenu.
 
PS: le noir et blanc, c'est bien !

Reply

Marsh Posté le 15-11-2002 à 13:13:22    

hum je comprends pas tout dans pour les thread. (je suis en train de lire l aide de borland).
 Par quoi je commence ma classe?


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 15-11-2002 à 13:24:44    

:cry:


Message édité par KrzAramis le 15-11-2002 à 13:44:54

---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 15-11-2002 à 13:41:05    

:ouch:  :ouch:  :ouch:  :pfff:  
 
 
 :pt1cable:  [:necris]  [:seyar]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-11-2002 à 13:41:05   

Reply

Marsh Posté le 15-11-2002 à 18:01:12    

KrzAramis a écrit a écrit :

hum je comprends pas tout dans pour les thread. (je suis en train de lire l aide de borland).
 Par quoi je commence ma classe?  



tu commences par lire AUTRE CHOSE que les trucs de borland :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 16-11-2002 à 16:15:47    

--greg-- a écrit a écrit :

tu commences par lire AUTRE CHOSE que les trucs de borland :o




 
[:ddr555]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-11-2002 à 22:32:47    

Citation :

Maintenant il est fort possible que deux clients accedent a ce catalogue en meme temps et le modifie !


 
Bon, a ce moment là, ce que je te conseille c'est de créer un object dedicacé a la gestion de ton catalogue.
 
Celui-ci aura des methodes classiques en ce qui concerne la consultation, mais ses methodes de modifications seront "synchronized".
 
C'est a dire qu'il ne rendra ce service que pour un seul objet a la fois. Ca te garantira une coherence des données, c'est une methode couramment utilisé pour gere le multi-threading...

Reply

Marsh Posté le 18-11-2002 à 15:34:30    

desole les gars j ai du rentrer chez moi en vitesse. Donc j ai malheureusement lu l aide de boralnd. Et paf!!! j ai pas compris ! :cry:
 
Pire j arrive pas a commencer ma classe !
J ai dans l idee de faire ca:

Code :
  1. class Multiserver
  2. {
  3.       /* Variable accessible dans toute la classe */
  4.       blabla
  5.      
  6.       public static void main(String[]args) throws IOException
  7.       {
  8.         ServerSocket sock = new ServerSocket(1111);
  9.         while(true)
  10.         {
  11.          
  12.           Socket sock1 = sock.accept();
  13.           new MaConnexion(sock1);
  14.         }
  15.       }
  16.       public MaConnexion(Socket client) extends Runnable
  17.       {
  18.        lancer mon thread ici ?
  19.        .......
  20.       }
  21.       public void run()
  22.       {
  23.           /* ce que doit fqire mon server */
  24.       }
  25.       public void stop()
  26.       {
  27.           /* fermer les connexions ! */
  28.       }
  29. }


 
Alors j ai juste ?


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 16:13:02    

vu ton code y a pas que les threads que t'as pas compris ... Une méthode qui implémente une interface c'est assez comique ...
 
retourne à la case http://penserenjava.free.Fr


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-11-2002 à 16:20:18    

Citation :

vu ton code y a pas que les threads que t'as pas compris ... Une méthode qui implémente une interface c'est assez comique ...


 :sweat:  
 
J adore lire ce genre de commentaire ca fait tjrs plaisir !  :(  
Enfin ca a le merite d etre direct.
Ma formation en Java est loin d etre terminee et qui plus est comme tu l as ecris recement la programmation Client/server c est pas pour tout le monde! je suis le premier a ere d accord avec toi seulement le PROF lui a dit que c etait possible meme sans jamais avoir fait de Java dans la vie. Alors je fais !
J ai pas vraiement le choix!
 
Je vais suivre ton lien qd meme ! :lol:
 
merci !
 
PS: le prof il ne touche pas une bille en Java !  :sweat:


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 16:24:10    

oui ma réponse était un peu sèche et je m'en excuse ... Cela dit, essaie peut etre de prendre du temps pour étudier les bases. Ca te servira toujours d'une manière ou d'une autre. Et c'est bien plus intelligent que de farfouiller dans du code en espérant que ca compile ...
 
A+


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-11-2002 à 16:35:36    

ben pour les bases... je me suis tape tout le bookin appelle CO72003 java Software Development part 01 de Stuart Mathiesson Napier School of Computing.
C est environ 100 pages d expliquations avec exos (deux niveaux: newbie et pas trop newbie). J arrive a faire, comprendre, commenter et meme customizer les programmes.
mais meme dans la partie 02 (centree sur la POO) le "multi threading" n y est pas aborde.
Je suis en train de lire qq articles sur le lien que tu m a file. Je comprends facilement les concepts. Cependant il doit encore manque qqc.
Ensuite, j ai deja un programme Cleint/Server qui marche pour un seul client et qui marche tres bien (selon le prof. moi j ai un peu honte car y a endroit qui m a pris la tete et j ai ecris le code comme un cochon ! mais bon le prof est heureux !).
Ce qui m interrese c est d apprendre et comprendre la methode qui me permettra de "traduire" mon code en multi thread.
 
j espere avoir ete concis.


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 16:37:54    

ben visiblement t'as pas encore bien saisi les bases sinon tu n'écrirais pas de méthode qui étend une interface ...
 
donc, une petite révision te ferras du bien et thinkinginjava (version original du lien que t'as filé dark) et TRES bien !

Reply

Marsh Posté le 18-11-2002 à 16:40:50    

Humm je suis sur que le terme "interface" n a jamais ete traite dans le bookin en question !  :heink:  
 
dommage! ca m aurai evite d ecrire des betises !


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 16:47:00    

KrzAramis a écrit a écrit :

Humm je suis sur que le terme "interface" n a jamais ete traite dans le bookin en question !  :heink:  




 :ouch:  :heink:  
 
cours vers http://penseenjava.free.fr alors !

Reply

Marsh Posté le 18-11-2002 à 16:55:35    

Pourquoi es tu surpris benou ? la part 1 traite seulement de Java en mode console!
 
ne t inquiete pas je lis je lis.


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 16:58:31    

KrzAramis a écrit a écrit :

Pourquoi es tu surpris benou ? la part 1 traite seulement de Java en mode console!
 
ne t inquiete pas je lis je lis.




 
interface != interface graphique :ouch:

Reply

Marsh Posté le 18-11-2002 à 16:58:51    

lorill a écrit a écrit :

 
 
interface != interface graphique :ouch:



ben y peut pas savoir :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-11-2002 à 17:00:41    

--greg-- a écrit a écrit :

ben y peut pas savoir :o




ben maintenant il sait :o

Reply

Marsh Posté le 18-11-2002 à 17:01:33    

KrzAramis a écrit a écrit :

Pourquoi es tu surpris benou ? la part 1 traite seulement de Java en mode console!




parce que savoir ce qu'est une interface ca fait vraiment partit des bases. Alors qu'un bouquin de Java n'en parle pas, ca me surprend VRAIMENT bcp.
Si c'est le cas, faut le bruler !

Reply

Marsh Posté le 18-11-2002 à 17:02:36    

J hesite sincerement entre "merci" et "f#%&**8#@'" mais bon.
Juste que la le truck client server en version sequentiel n a ete qu une formalite et je n ai pas 107 ans pour comprendre/appliquer ce "multi thread"....  :pt1cable:


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 18-11-2002 à 17:15:50    

si t'as pas le temps, tu trouveras des milliers d'exemple de ce que tu essayes de faire sur le net

Reply

Marsh Posté le 18-11-2002 à 17:25:58    

Citation :

Si c'est le cas, faut le bruler !


 
N"hesite pas a danser autour du feu en poussant des petits cris....
 
Franchement zarb ton livre qui parle pas des interfaces en  100 pages....


Message édité par bartleby le 18-11-2002 à 23:20:50
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed