Threading et exception?

Threading et exception? - Java - Programmation

Marsh Posté le 20-11-2006 à 18:17:01    

Bonjour,
Je dois faire un programme qui verifie la disponibilité et le bon fonctionnement d'un outil :
Soit TraitementLong la classe qui fait tous les tests.
 
L'un des problème que je dois gérer est la mauvaises prise en compte de TraitementLong des TimeOut.
 
Pour cela je crée un Thread qui lance un TimeOut en même qu'un thread qui qui lance TraitementLong.
 
 
Voila le code :
 
 

Code :
  1. package ppaceMaker;
  2. import org.apache.log4j.Logger;
  3. import org.apache.log4j.PropertyConfigurator;
  4. import utilities.Mailing;
  5. import utilities.PPlus;
  6. import utilities.Utils;
  7. import utilities.Timer;
  8. import com.sciforma.psnext.api.PSException;
  9. public class ConnectionDiagnosis_V5 extends Timer {
  10. static final long start = System.currentTimeMillis();
  11. static long now = start;
  12. final boolean OK = true;
  13. private static int TIME_OUT = 5;
  14. private static final Logger logger = Logger.getLogger("PACEMAKER" );
  15. static boolean timeOut = false;
  16. static boolean success = false;
  17. public ConnectionDiagnosis_V5(int arg0) {
  18.  super(arg0);
  19.  // TODO Auto-generated constructor stub
  20. }
  21. private synchronized static void lanchtest() throws PSException {
  22.  PPlus mytest = new PPlus(true, true);
  23.  mytest.closeSession();
  24. }
  25. static Thread tpplus = new Thread(new Runnable() {
  26.  public void run() {
  27.   // le code qui te prend du temps
  28.   try {
  29.    lanchtest();
  30.    success = true;
  31.    tcounter.interrupt();
  32.   } catch (Exception e) {
  33.    e.printStackTrace(); // eventuelle
  34.   }
  35.  }
  36. });
  37. static Thread tcounter = new ConnectionDiagnosis_V5(TIME_OUT * 1000);
  38. synchronized public void timeout() {
  39.  System.err.println("ICI?" );
  40.  // Erreur de TO
  41.  logger.error("PPlus Timeout occurred.... terminating" );
  42.  /*
  43.   * Utils.timeIt(now); // this.stop();
  44.   * Mailing.sendMail("xxxxx@sgcib.com",
  45.   * "xxxxx@sgcib.com", "Time Out Problem!!!", "Attention avec
  46.   * la copyProd" ); try { Thread.sleep(1000); } catch
  47.   * (InterruptedException e) { // TODO Auto-generated catch block
  48.   * logger.error(e); } this.stop();
  49.   */
  50.  tpplus.interrupt();
  51.  timeOut = true;
  52.  this.stop();
  53. }
  54. public static void checkJobDate() {
  55. }
  56. public static void main(java.lang.String[] args) {
  57.  PropertyConfigurator.configure(ConnectionDiagnosis.class
  58.    .getClassLoader().getResource("conf/log4j.properties" ));
  59.  logger.info("Starting Diagnosis" );
  60.  tcounter.start();
  61.  tpplus.start();
  62.  while (!timeOut) {
  63.  }
  64.  logger.info("Ending Diagnosis" );
  65.  Utils.timeIt(start);
  66. }
  67. }


Message édité par PETOZAK le 01-10-2007 à 11:31:08
Reply

Marsh Posté le 20-11-2006 à 18:17:01   

Reply

Marsh Posté le 20-11-2006 à 18:17:15    

Mon problème est simple:
 
 
Comment récupérer les interruptions de Thread (java.lang.InterruptedException) pour pouvoir lancer le traitement voulu. Dans mon cas :
 
Si Time out se produit : Tuer Thread et Envoyer Mail depuis le Main.
 
 
Il est à noter que les 2 threads doivent s'interrompre , en effet :
Si TraitementLong < TimeOut alors je dois tuer TimeOut et envoyer un mail positif
 
TraitementLong > TimeOut alors je dois tuer TimeOut et envoyer un mail négatif

Reply

Marsh Posté le 20-11-2006 à 18:17:26    

Est ce que join peut m'aider?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed