Bonjour,

J'ai un Thread principale qui va recevoir les commandes(par socket) et il va analyser la commande et faire ce qu'il faut en fonction.
Tout marche bien mais au moment ou je crée un Thread dans ce Thread et je demande au "sous-thread" de changer une variable dans le thread principale, il bloque. Je veux dire il n'avance plus... Que ça soit un simple get ou un set que j'essaie de faire, il n'arrive même pas à la première ligne de la méthode du thread principale.

Avez-vous une idée ?

Thread principale :
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
@Override
public synchronized void run() {
	while (isRunning()) {
		System.out.println("Starting to listen");
		// analyse the packet juste receive
		try {
			cts.analyse((Object) network.readObject());
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	con.setConsole("Closing socket");
	network.CloseSocket();
}
 
public synchronized void stopThread(){
    	  System.out.println("STOP");
    	  this.run[0] = false;
      }
 
public synchronized boolean isRunning(){
    	  return run[0];
      }
Thread secondaire :
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
@Override
public synchronized void run(){
	int error = 0;
	setAcknoledgeAcceptedConnect(false);
	while(error < 3){
	        if(!getAcknoledgeAcceptedConnect()){
	        	try {
				network.writeObject(this.data);
			} catch (IOException e) {
				e.printStackTrace();
			}
	        }else{
	        	break;
	        }
	        error++;
	        try {Thread.currentThread().wait(3000);} catch (InterruptedException e) {e.printStackTrace();}
	 }
	 if(getAcknoledgeAcceptedConnect()){
	       connections.addUser(this.user, skt, thread);
	 }else{
	        connections.setConsole("No response from "+this.user.getUsername());
	        	thread.stopThread();
	 }
	 setAcknoledgeAcceptedConnect(false);
    	}
Dès que le thread secondaire arrive à il ne fait plus rien, mais aucune erreur n’apparaît.

Cordialement,

rXp>!<