Bonjour,
j'ai une question un peu compliqué, un comportement que j'arrive pas trop à comprendre, mais que je vais essayé d'expliquer le plus clairement possible. Accrochez vos ceintures, decollage.
Tout d'abord j'ai un thread client qui lit un fichier (et plus tard un socket), le bufferized et le met à la dispo de mon application. Pour lire le fichier j'utilise
tout se passe bien j'arrive à lire mon fichier et tout et tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 input2 = new BufferedReader(new InputStreamReader(new FileInputStream(app.getClientPreferences().getFile())));
Par contre, quand je veux lire un deuxième fichier, c'est là que ça marche plus. Je vous explique ce que je fais.
je termine mon thread de cette manière :
j'utilise un boolean exit et si exit est à true dans la boucle de mon thread je fais this.interrupt() pour faire ensuite return;
voila le code de mon run()
et le code des methode qui me servent à terminer mon 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 public void run() { if(app.getClientPreferences().getMode() == ClientPreferences.SOCKETCONNECTION) { try { output.write("D\n"); output.flush(); } catch (IOException e) { System.err.println("Coulnd't write to HTA"); return; } } // Loops to get data from network. while(true) { try { exitIfNeeded(); if(requestData()) setUpdated(1); Thread.sleep(SLEEP_TIME); //System.out.println("Frames: " + HumanData.frames); } catch (InterruptedException e) { System.err.println("Client stop"); return; } } }
le bug
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public synchronized void exit(){ exit = true; } private synchronized void exitIfNeeded() throws InterruptedException { if (exit) { disconnect(); this.interrupt(); } }
quand j'ouvre un nouveau fichier, j'ai comme l'impression qu'il reprend la position où il était avant. Si je réouvre le même fichier, c'est exactement la position où il était avant et si j'en ouvre un autre, c'est un position qui je pense doit dépendre de la postion où il se trouvait dans l'autre fichier.
les idées que j'ai
est-ce que je quitte bien mon thread comme il faut ? (en faisant le return dans le while(true){...})
est-ce que la manière dont j'ouvre mon fichier conserve la position indépendamment de l'object qui va ouvrir ce fichier ?
je sais que c'est un peu fouillis comme ça, mais merci pour votre aide
Partager