J'avais précédemment posté une requête sur les threads Java. (link text)Les threads Java doutent
Et sur la base des réponses que j'ai reçues, j'ai décidé de les implémenter. J'ai donc fait ce peu de codage sur une machine avec 2 cœurs de processeur. Le code est le suivant
import java.net.*;
import java.io.*;
public class thready implements Runnable{
private Socket num;
public thready(Socket a) {
this.num=a;
}
public void run() {
try {
BufferedInputStream is = new BufferedInputStream(num.getInputStream());
System.out.println("Connected to port"+num);
} catch (IOException ex) {
//Logger.getLogger(thready.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String [] args)
{
int port = 80;
int port1= 81;
//int count = 0;
try{
ServerSocket socket1 = new ServerSocket(port);
ServerSocket socket2 = new ServerSocket(port1);
while (true) {
Socket connection = socket1.accept();
Socket connection1 = socket2.accept();
Runnable runnable =new thready(connection);
Runnable run= new thready(connection1);
Thread t1=new Thread(runnable);
Thread t2=new Thread(run);
t1.start();
t2.start();
}
}
catch(Exception e)
{
} }}
Maintenant Im test ce morceau de code à l'aide Hyperterminal et me connecte à la fois le port 890 et le port 81 (am avec 2 instances du HyperTerminal) et si je comprends bien le comportement attendu devrait être que "Connecté au port 'numéro de port" "doit être imprimé dès qu'une connexion à un port (80 ou 81) est établie. Mais la sortie que j'obtiens ici de ce morceau de code est que si je me connecte à seulement 1 port alors la sortie requise n'est pas imprimée et si je me connecte aux deux ports, l'une après l'autre, la sortie est imprimée seulement après les deux ports est connecté. Cela me conduit à nouveau à la confusion initiale quant à savoir si ces deux threads s'exécutent simultanément ou si l'exécution est en alternance entre ces deux threads.
Toutes les suggestions seraient d'une grande aide.
Vive
+1 pour ne pas avoir lu les documents de l'API Java :) – willcodejavaforfood