Salut tout le monde,
voici mon code:
package LesClasses;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Asma
*/
public class ThreadSystem extends Thread{
BlockingDeque q=new LinkedBlockingDeque();
BlockingDeque buffersave=new LinkedBlockingDeque();
public Vector v;
private final Vector b;
ArrayList ThreadList=new ArrayList();
//private final File repertoire;
private ManipulerDocument m=new ManipulerDocument();
private final String nomrepertoire;
private int n;
private DataGuide dgg=new DataGuide();
private FichierInverse fi=new FichierInverse();
private org.jdom.Document d;
private ThreadSecondaire tscd;
public boolean bl;
public ThreadSystem(Vector b,String nomrepertoire,int n){
this.b=b;
this.nomrepertoire=nomrepertoire;
this.n=n;
}
public int verifierThread(){
int j=0;
for(int i=0;i<ThreadList.size();i++){
if(((ThreadSecondaire) ThreadList.get(i)).Etat==true){
j++;
}
}
return j;
}
//@Override
// System.out.println(">> Création des threads");
//Création des threads secondaires
public void CreationThread(){
Vector vec = m.lesListesDeRepertoires(nomrepertoire,n);
for(int i=0;i<vec.size();i++){
ArrayList liste=(ArrayList) vec.get(i);
ThreadSecondaire ts=new ThreadSecondaire(i,liste ,b);
ThreadList.add(ts);
}
}
// System.out.println(">> Lancement des threads Phase 1");
//Lancement des threads secondaires
public void LancerThread(){
for(int jj=0;jj<ThreadList.size();jj++){
ThreadSecondaire trs=(ThreadSecondaire) ThreadList.get(jj);
trs.start();
}
}
public void Attente(){
//Attente de la fin de la phase 1
System.out.println(">> Attente...");
while(verifierThread()<ThreadList.size()){
try {
sleep(2000);
} catch (InterruptedException x) {
Logger.getLogger(ThreadPrincipal.class.getName()).log(Level.SEVERE, null, x);
}
}
}
// System.out.println(">> Création du DG principal");
//Création du dataguide principal
public org.jdom.Document creationDataGuide(){
Vector vc = null;
for(int r=0;r<ThreadList.size();r++){
try {
// System.out.println(r);
//System.out.println(ThreadList.size());
vc = dgg.getCheminfinalMinMax((ArrayList) b.get(r));
d=dgg.construireDataGuideGlobale((ArrayList)b.get(r), d);
} catch (IOException xx) {
Logger.getLogger(ThreadPrincipal.class.getName()).log(Level.SEVERE, null, xx);
}
}
v=vc;
return d;
//this.setDG(vc);
}
//Lancement de la seconde phase
// System.out.println(">> Lancement des threads Phase 2");
public void LancerThread2(){
for(int i=0;i<ThreadList.size();i++){
((ThreadSecondaire)ThreadList.get(i)).setDG(v);
((ThreadSecondaire)ThreadList.get(i)).setEtape(2);
}
}
//Attente de la fin de la seconde phase
//Lancement de la Création du fichier inverse principal
// System.out.println(">> Création du fichier inverse principal");
public int calculerFC(){
int fc=0; //Méthode de création du fichier inverse principal
for(int kk=v.size();kk<b.size();kk++){
Vector vterme=(Vector) b.get(kk);
int dert=vterme.size()-1;
CTermes interm=(CTermes) vterme.get(dert);
String nbf= interm.getTerme();
Integer monnombre=new Integer(nbf);
int nbnfv = monnombre.intValue();
vterme.remove(dert);
fc=fc+nbnfv;
}
return fc;
}
public org.jdom.Document creationFichier(int fc){
fi.remplireTermeNbNoued((Vector)b,v.size());
//fi.afficherTousLesTermes((Vector) b.get(v.size()));
org.jdom.Document fig = null;
for(int j=v.size();j<b.size();j++){
fig=fi.construireFIG((Vector) b.get(j), fc);
}
return fig;
}
//Tuer tous les threads.
public void tueThread(){
for(int k=0;k<ThreadList.size();k++){
ThreadSecondaire t=(ThreadSecondaire) ThreadList.get(k);
t=null;
}
}
public void setDG(Vector w){
v.clear();
DGElement ldg;
for(int i=0;i<w.size();i++){
ldg=new DGElement(((DGElement)w.get(i)).chemin);
ldg.setMax(((DGElement)w.get(i)).max);
ldg.setMin(((DGElement)w.get(i)).min);
this.v.add(ldg);
}
}
ma fenetre:
import LesClasses.CTermes;
import LesClasses.DataGuide;
import LesClasses.FichierInverse;
import LesClasses.ManipulerDocument;
import LesClasses.ThreadSecondaire;
import LesClasses.ThreadSystem;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JFileChooser;
public class IFTIParallele extends javax.swing.JFrame implements Runnable{
/** Creates new form IFTIParallele */
public IFTIParallele() {
initComponents();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fc=new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setMultiSelectionEnabled(false);
fc.setDialogTitle("Select a Directory");
int result=fc.showOpenDialog(null);
if(result==JFileChooser.APPROVE_OPTION ){
String dirName=fc.getSelectedFile().getAbsolutePath();
jTextField1.setText(dirName);
} // TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
nomrepertoire=jTextField1.getText();
String nn=jTextField2.getText();
n=Integer.valueOf(nn);
run();
FinIndexation FI=new FinIndexation();
FI.setVisible(true);
//// Vector q=new Vector();
//ThreadPrincipal tp=new ThreadPrincipal(q,nomrepertoire,n);
//tp.start(); // TODO add your handling code here:
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
String s=dgg.convertirXMLString(d1);
String s1=dgg.convertirXMLString(d2);
jTextArea1.append(s);
jTextArea2.append(s1);
// TODO add your handling code here:
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0); // TODO add your handling code here:
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new IFTIParallele().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
private javax.swing.JTextField jTextField7;
// End of variables declaration
public Vector v;
private final Vector b=new Vector();
private ManipulerDocument m=new ManipulerDocument();
private String nomrepertoire;
private int n;
private DataGuide dgg=new DataGuide();
private FichierInverse fi=new FichierInverse();
private org.jdom.Document d;
private org.jdom.Document d1;
private org.jdom.Document d2;
public void run() {
jTextField6.setText("actif");
ThreadSystem ts=new ThreadSystem(b, nomrepertoire, n);
ts.CreationThread();
ts.LancerThread();
jTextField6.setText("attente");
ts.Attente();
jTextField6.setText("actif");
d1=ts.creationDataGuide();
ts.LancerThread2();
jTextField6.setText("attente");
ts.Attente();
jTextField6.setText("actif");
int fc=ts.calculerFC();
d2=ts.creationFichier(fc);
}
mon problème est dans la méthode run la classe IFTIParallele je fait remplie mon JTextField6 et a chaque fois je modifie le contenu de jTextField6 a l'exécution de m?application on cliquant sur jBouton1 j'obtient le dernier état de thread(mon application) j'ai supprimer tous lis instructions de JTextField6 on laissons que la première, s'affiche mais après traitement non pas au début alors je pense que c'est un problème de Listener je ne sais pas le résoudre , Aide moi SVP SVP
Afficher la suite