IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

les threads en java


Sujet :

Java

  1. #1
    Débutant   Avatar de t.n.b.g
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 237
    Points : 99
    Points
    99
    Par défaut les threads en java
    bonjours tout le monde
    je vais vous expliquer le problem:
    en fait je dois faire un programme en java qui utilise les thread, c'est une similation du traffic de voiture sur un pont qui laisse passer seulement une seule voiture dans un sens ou un autre, avec la possibiliter de parker trois voiture a droite et trois a gauche sur le pont dans le cas ou deux voiture se croise a mi-chemin, en fait j'ai reussi a faire ca mais avec un parking illimité(a droite et a gauche) ,et je dois le reduire a trois a gauche et trois a droite.

    bridge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public class Bridge {
    	protected String state;
    	protected int nVehicles;
    	public String name;
    	public Bridge(String name){
    		state = new String("free");
    		nVehicles=0;
    		this.name =name;
    	}
    	public synchronized void getBridge(String direction){
    	    while(!(state.equals("free")|| state.equals(direction))){
    	          try{     wait();   }
    	          catch(InterruptedException e){
    	              System.err.println(e);
    	          }
    	    }
    		state = direction;
    		nVehicles++;
    	}
    	public synchronized void releaseBridge(){
    		nVehicles--;
    		if(nVehicles==0){
    			state="free";
    			notifyAll();
    		}
    	}
     
    }
    circulation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Circ {
    	static Bridge left,right;
    	public static void main(String arg[]){
    		left=new Bridge("leftBridge");
    		right= new Bridge("rightBridge");
    		for(int i=0; i<Math.random()*30;i++){
    			(new Vehicle("left vehicle "+i, "leftToRight")).start();
    		}
    		for(int i=0; i<Math.random()*30;i++){
    			(new Vehicle("right vehicle "+i, "rightToLeft")).start();
    		}
     
    	}
     
    }

    vehicule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class Vehicle extends Thread{
    	String name, direction;
    	Bridge first,second;
    	public Vehicle (String name, String direction){
    		this.name=name;
    		this.direction = direction;
    		if(direction.equals("leftToRight")){
    			first = Circ.left;
    			second = Circ.right;
    		}
    		else{
    			second = Circ.left;
    			first = Circ.right;			
    		}			
    	}
    	public void run(){
    		int i;
    		Bridge bridge;
    		for(i=0,bridge=first;i<2;i++,bridge=second){
    			try {          //to make random ask for the resources
    	     		sleep((int)(Math.random()*200));
    	 	    } catch (InterruptedException e){} 
    	 	    bridge.getBridge(direction);
    	 	    System.out.println(name+ " Passing throw "+bridge.name
    	 	    		           +" in direction: " +direction);
    			try {          //to pass the bridge
    	     		sleep(600);
    	 	    } catch (InterruptedException e){}
    	 	    bridge.releaseBridge();			
    		}
     
    	}
     
    }

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par t.n.b.g Voir le message
    en fait j'ai reussi a faire ca mais avec un parking illimité(a droite et a gauche) ,et je dois le reduire a trois a gauche et trois a droite.
    Oui, mais réduire le nombre de places, c'est ton cahier des charges. Maintenant, quel est le problème précisément?... Parce qu'on ne fera pas le travail à ta place. Par contre, si tu butes sur un problème technique précis, on pourra t'aider.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Débutant   Avatar de t.n.b.g
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    oui je comprend CyberChouan je suis tout a fait d'accord avec toi,
    mais je sais pas quel methode utiliser pour reduire le nombre de place et ou le placer dans quel code ? normalement ca sera mis dans la classe Vehicle a ce que
    je pense!!

  4. #4
    Débutant   Avatar de t.n.b.g
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    voila j'ai fait des rectification ,donc j'ai ajouter une place parking mais le en excecutant le programme j'ai que le passage des voiture et non pas celle du parking
    parking
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    import java.util.ArrayList;
     
    public class Parking {
    	protected String state;
    	protected int nVehicles;
    	public String name;
    	ArrayList<String> leftPark = new ArrayList<String>();
    	ArrayList<String> rightPark = new ArrayList<String>();
     
    	public Parking (String name){
    		state = new String("free");
    		nVehicles=0;
    		this.name=name;		
    	}
     
    	public synchronized void getPark(String direction){
    	    while(!(state.equals("free")|| state.equals(direction))){
    	          try{     wait();   }
    	          catch(InterruptedException e){
    	              System.err.println(e);
    	          }
    	    }
    		state = direction;
    		if(direction.equals("leftToRight")) leftPark.add(this.name);
    		else rightPark.add(this.name);
    	}
     
    	public synchronized void releasePark(){
    		if(rightPark.size() < 0){
    			state="free";
    			notifyAll();
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class Vehicle extends Thread{
    	String name, direction;
    	Bridge first,second;
    	public Vehicle (String name, String direction){
    		this.name=name;
    		this.direction = direction;
    		if(direction.equals("leftToRight")){
    			first = Circ.left;
    			second = Circ.right;
    		}
    		else{
    			second = Circ.left;
    			first = Circ.right;			
    		}
    	}
    	public void run(){
    		int i;
    		Bridge bridge;
    		for(i=0,bridge=first;i<4;i++,bridge=second){
    			try { //to make random ask for the resources
    	     		sleep((int)(Math.random()*200));
    	 	    } catch (InterruptedException e){} 
    	 	    bridge.getBridge(direction);
    	 	    System.out.println(name+ " Passing throw "+bridge.name
    	 	    		           +" in direction: " +direction);
    			try { //to pass the bridge
    	     		sleep(600);
    	 	    } catch (InterruptedException e){}
    	 	    // tuk trqbva da se dobavi proverka za da parkira ili ne
    	 	    bridge.releaseBridge();
    		}
     
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Circ {
    	static Bridge left,right;
    	public static void main(String arg[]){
    		left=new Bridge("leftBridge");
    		right= new Bridge("rightBridge");
    		for(int i=0; i<Math.random()*30;i++){
    			(new Vehicle("left vehicle "+i, "leftToRight")).start();
    		}
    		for(int i=0; i<Math.random()*30;i++){
    			(new Vehicle("right vehicle "+i, "rightToLeft")).start();
    		}
     
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    public class Bridge {
    	protected String state;
    	protected int nVehicles;
    	public String name;
    	public Bridge(String name){
    		state = new String("free");
    		nVehicles=0;
    		this.name =name;
    	}
    	public synchronized void getBridge(String direction){
    	    while(!(state.equals("free")|| state.equals(direction))){
    	          try{     wait();   }
    	          catch(InterruptedException e){
    	              System.err.println(e);
    	          }
    	    }
    		state = direction;
    		nVehicles++;
    	}
    	public synchronized void releaseBridge(){
    		nVehicles--;
    		if(nVehicles==0){
    			state="free";
    			notifyAll();
    		}
    	}
     
    }

Discussions similaires

  1. les Threads en Java
    Par siempre dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/10/2010, 11h01
  2. Les threads en Java / Swing et le "corpus" du programme
    Par jeanjean6 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/04/2010, 10h17
  3. Les Threads en java
    Par khaigo dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 27/10/2009, 14h58
  4. Les Threads en java
    Par opensource dans le forum Débuter
    Réponses: 11
    Dernier message: 06/03/2009, 09h52
  5. les threads en java
    Par karimala dans le forum Général Java
    Réponses: 2
    Dernier message: 29/12/2008, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo