nabta
Messages postés5Date d'inscriptionmercredi 26 mars 2008StatutMembreDernière intervention27 avril 2008
-
23 avril 2008 à 22:26
nabta
Messages postés5Date d'inscriptionmercredi 26 mars 2008StatutMembreDernière intervention27 avril 2008
-
25 avril 2008 à 03:38
bon soir ou bonjour, je cherche des
codes de sources qui utilise des threads dans des Japplet, afin de voir
comment m'en profiter pour implementer un code sur Netbeans qui
manipule des thread d'envoi et de reception de données et l'introduire
dans une applet.merci
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 24 avril 2008 à 09:40
Soit plus claire stp. Quel genre d'envoi de données? C'est du réseau, un producteur-consommateur, ou bien? Dans une applet on peut faire à peu prêt la même chose que dans une application standard donc il n'y a pas de souci.
Pour crée un thread, je connais deux méthodes. Soit tu crées une class Runnable soit tu crées directement un class Thread.
Première méthode :
Par exemple :
<hr size= "2" width="100%" />
public class ThreadBete extends Thread {
private String texte;
private int nbAffichages;
public ThreadBete(String texte, int nbAffichages) {
this.texte = texte;
this.nbAffichages = nbAffichages;
}
public int getNbAffichages() {
return nbAffichages;
}
public String getTexte() {
return texte;
}
public void setTexte(String texte) {
this.texte = texte;
}
public void run() {
for (int i = 0; i < nbAffichages; i++) {
System.out.println(texte);
}
}
}
et le test qui va avec :
<hr size="2" width="100%" />
public class TestThreadBete {
public static void main(String... args) {
Thread threadA = new ThreadBete("A", 1000);
Thread threadB = new ThreadBete("BBBBBBBB", 1000);
threadA.start();
threadB.start();
}
}
Si tu lances ça tu verras normalement que le threadA et le threadB ne s'exécutent pas séquentiellement. Selon ton processeur et ta version de Java, ils vont alterner plus ou moins souvent.
Deuxième méthode
Tu peux faire la même chose avec Runnable :
<hr size ="2" width="100%" />
public class RunnableBete implements Runnable {
private String texte;
private int nbAffichages;
public RunnableBete(String texte, int nbAffichages) {
this.texte = texte;
this.nbAffichages = nbAffichages;
}
public int getNbAffichages() {
return nbAffichages;
}
public String getTexte() {
return texte;
}
public void setTexte(String texte) {
this.texte = texte;
}
@Override
public void run() {
for (int i = 0; i < nbAffichages; i++) {
System.out.println(texte);
}
}
}
et la classe de test :
<hr size="2" width="100%" />
public class TestRunnableBete {
public static void main(String... args) {
Thread threadA = new Thread(new RunnableBete("A", 1000),
"Je suis le threadA");
Thread threadB = new Thread(new RunnableBete("BBBBBBBB", 1000),
"Je suis le threadB");
threadA.start();
threadB.start();
}
}
Pour ce qui est de la synchronisation, on utilise généralement les instructions wait(), notify() et notifyAll(). Attention, en règle générale, les méthodes où tu appelles ces instructions doivent contenir le mot-clé synchronized dans leur définition.
Exemple :
<hr size="2" width="100%" />
public synchronized void lireMessage(){
if(messages.isEmpty()) wait();
System.out.println(messages.removeFirst());
notify();
}