Je travaille actuellement sur un programme Java basé sur un socket multithread qui devrait permettre à plusieurs threads d'envoyer une requête à ce programme. Cela devrait être géré avec l'activation de l'événement, mais j'ai du mal à comprendre les événements et leur mise en œuvre. Ci-dessous, le code qui devrait permettre à plus d'un thread de communiquer avec le programme, mais je n'ai qu'un thread ici. Quelqu'un peut-il s'il vous plaît apporter plus de lumière à ce sujet? Très appréciée.Comment créer un événement en Java
//this is a a threads class
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Niti implements Runnable {
public String line;
public Socket soc;
public boolean active=true;
public Niti(Socket soc)
{
this.soc=soc;
this.line=line;
this.active=active;
}
public synchronized void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));
line=br.readLine();
while(line!=null && !line.equals("")){
if(!this.active)
break;
System.out.println(line);
line=br.readLine();
}
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
bos.write("Poruka iz Programa".getBytes());
}
catch (IOException ex) {
Logger.getLogger(Niti.class.getName()).log(Level.SEVERE, null, ex);
}
try {
soc.close();
} catch (IOException ex) {
Logger.getLogger(Niti.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
//and this is the main class
public class Server{
public static synchronized void main(String[] args) throws IOException, InterruptedException{
ServerSocket ss = new ServerSocket(1000);
while(true){
Socket sokit = ss.accept();
Niti n = new Niti(sokit);
while(true){
Thread t = new Thread(n);
t.start();
//Thread.sleep(4000);
//n.active=false;
System.out.println("nit broj:" + Thread.currentThread().getId());
}
}
}
}
Désolé mais j'ai du mal à comprendre ce que vous demandez. Voulez-vous transmettre certains paramètres au nouveau thread? – m0skit0
Salut Ivan, j'ai remarqué que vous attrapez la même 'IOException' deux fois dans la même méthode. Bien que cela ne fasse aucune différence, il serait préférable d'utiliser seulement 1 bloc catch pour la même 'IOException'. Cela rendra votre code un peu plus ordonné. – blackpanther
Ce que j'essaie de faire est d'activer plusieurs threads pour accéder à ce serveur au lieu d'un seul. Si vous mettez ce code dans votre Net Beans, il passera à travers un seul thread. Dernièrement, on m'a dit que pour que plusieurs threads puissent accéder au serveur, je devais créer des événements et des auditeurs qui pourraient aider à résoudre ce problème. Je ne sais pas comment faire cela, avez-vous une idée d'où je devrais commencer? TY –