public synchronized void run() {
		int i;
		try {
			while(true) {
				for(i=0 ; i<this.current_argument_count ; i++){
					this.wait();//On attend de récupérer toutes nos données
				}
				for( Data d : this.arguments.values()) this.addInput(d);//Une fois qu'elles sont récupérées, on les met dans Input
				this.eval(this.name);//On execute le calcul et on met le résultat dans Output
				this.setChanged();
				this.notifyObservers(this.getOutput());//On préviens les autres que le calcul a été exectué
				
				this.getInput().clear();//On nettoie le input()
				this.getOutput().clear();//On nettoie le output()
				this.required.clear();
				this.current_argument_count = this.argument_count; //On remet à jour le compteur
			}
			
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
	}