Bonjour à tous ,

Voici mon code de principe initial et fonctionnel :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.StringTokenizer;
 
 
public class Example {
 
	static String line;
	static boolean startNext = true;
	static String fichiersATelecharger;
 
 
	public static void main(String args[]) throws FileNotFoundException {
		Path chemin = Paths.get("d:", "fichier.txt");
		FileReader fr = new FileReader(chemin.toString());
		BufferedReader br =  new BufferedReader (fr);
 
	    try{
	    	while ((line  = br.readLine()) != null) {
	    		if (startNext){
	            StringTokenizer token = new StringTokenizer (line);
 
	            while(token.hasMoreTokens()){
 
	                fichiersATelecharger=(token.nextToken());
 
 
	                telecharger(fichiersATelecharger );
 
 
	               }
	            }
 
	    	}
 
	    } catch (IOException e) {
	        System.out.println (e.getMessage());
	        e.printStackTrace();
	    } finally {
	        try {
				br.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }
		}
 
 
public static void telecharger (  String fichiersATelecharger ){
	 startNext = false;
 
 
 	System.out.print(fichiersATelecharger);
 	System.out.print("\n");
 	// simulation du temps de téléchargement
 	try { 
 		  Thread.sleep(2000);
 		}
 		catch (InterruptedException exception) {
 		  exception.printStackTrace();
 		}
 	startNext = true;
}
}
Ce code fonctionne et donc toutes les 2 secondes j'affiche une ligne de mon fichier.txt.

contenu fichier.txt:
chemin1
chemin2
chemin3
chemin4
sortie console:
chemin1
(2s d'attente)
chemin2
(2s d'attente)
chemin3
(2s d'attente)
chemin4
(2s d'attente)
Je voudrais maintenant que l'action de la méthode telecharger() s'exécute au travers d'un Thread:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.StringTokenizer;
 
 
public class Example {
 
	static String line;
 
	static String fichiersATelecharger;
	static boolean startNext = true;
 
	public static void main(String args[]) throws FileNotFoundException {
		Path chemin = Paths.get("d:", "fichier.txt");
		FileReader fr = new FileReader(chemin.toString());
		BufferedReader br =  new BufferedReader (fr);
 
	    try{
	    	while ((line  = br.readLine()) != null) {
	    		if (startNext){
	            StringTokenizer token = new StringTokenizer (line);
 
	            while(token.hasMoreTokens()){
 
	                fichiersATelecharger=(token.nextToken());
 
 
	                telecharger(fichiersATelecharger );
 
 
	               }
	            }
 
	    	}
 
	    } catch (IOException e) {
	        System.out.println (e.getMessage());
	        e.printStackTrace();
	    } finally {
	        try {
				br.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }
		}
 
 
public static void telecharger (  final String fichiersATelecharger ){
 
	 startNext = false;
 
 
 
	new Thread(new Runnable() {
 
 
 
		public boolean startNext ;
 
 
        @Override
        public void run() {
        	Example.fichiersATelecharger = fichiersATelecharger;
 
        	System.out.print(fichiersATelecharger);
        	System.out.print("\n");
        	//simulation du temps de téléchargement
        	try { 
        		  Thread.sleep(2000);
        		}
        		catch (InterruptedException exception) {
        		  exception.printStackTrace();
        		}
 
        	setStartNext(true);
        }
 
		public void setStartNext(boolean startNext) {
			Example.startNext = startNext;
			System.out.print(Example.startNext);
		}
	}).start();
 
}
 
}
sortie console:
chemin1
(2s d'attente)
true
Dans ce cas je n'affiche que la première ligne de mon fichier.txt. Pourtant la valeur de Example.startNext est bien sur true ainsi que la valeur de startNext dans mon main (visible en debug avec un break point)



Une aide ne serait pas de refus...merci d'avance