Timeout

Description

Faire un timeout réutilisable

Source / Exemple :


public abstract class Timeout {
	private class TimeoutThread implements Runnable {
		public void run() {
			Object res = command();
			synchronized (Timeout.this) {
				if (timedOut && res != null) {
				} else {
					result = res;
					Timeout.this.notify();
				}
			}
		}
	}
    
	private boolean timedOut = false;
	private Object result = null;
	protected Timeout() {}    
    
	public synchronized Object execute(int timeout) throws Exception {       
		new Thread(new TimeoutThread()).start();
              
		try {
			this.wait(timeout);
		} catch (InterruptedException e) {
			if (result == null) {
				timedOut = true;
			}else{
				commandTimeOut(result);
			}
			throw new Exception("timed out");
		}

		if (result != null) {
			return result;
		} else {
			timedOut = true;
			throw new Exception("timed out");
		}
	}
	
	/**

  • Command si on a un resultat ok mais que le timeout est eteind
  • @param result
  • /
protected abstract void commandTimeOut(Object result); /**
  • Command a executer
  • @return
  • /
protected abstract Object command(); }

Conclusion :


Dans le fichier zip vous trouverez un exemple d'utilisation

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (smarticu)