[Java] Processeur à 100%

Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   -  
 Skan -
Bonjour,

Alors voila j'ai un problème avec une fonction en Java. Ce n'est pas moi qu'il l'ait faite donc je maitrise pas toute les subtilitées du code.

private String Text_to_wav(String str)
	{

		try {
				
			String file = this.Ctrl.getConfig().getrepertoire_wav()+"\\"+this.repertoire+"\\"+this.getNom()+"_"+this.getPort()+"_"+this.nb_transformation +".wav";
	
			ActiveXComponent Speaker = new ActiveXComponent("ELAN_OCXLib.Elan_Speaker");
			
			Speaker.setProperty("Destination", new Variant(0));
			Speaker.setProperty("Autoload", new Variant(true));
			Speaker.setProperty("FileName",new Variant(file));
			Speaker.setProperty("DefaultSampleRate",new Variant(8000));
			Speaker.setProperty("Speed", new Variant(80));
			
			Variant test = Speaker.invoke("SelectNearest",new Variant[]{new Variant(1036),new Variant(2), new Variant("ELAN")});
			
			if (test.getBoolean()== true)
			{
				Speaker.invoke("SpeakAndWait",new Variant[]{new Variant(str)});
			}		
				
			 return file;
			 
		}catch(Exception e) {
			 System.out.println("erreur d'execution de l'activeX" + e.toString());
			 return "ERREUR_Text_to_Wav";
		}
	}


Je pense que c'est cette fonction qui gène. Elle transforme du texte en fichier wav à l'aide d'un ActiveX, si j'ai bien compris. Et à chaque appel de cette fonction, le processeur travaille à 100%, ce qui est très génant vu que cette fonction est appelé très régulièrement et que la création du fichier wav peut être assez longue...

Donc voila, existe-t-il une propriété pour limiter l'utilisation du processeur ?
Est-ce que je peux la paramètrer à l'aide d'un Speeaker.SetProperty("la propriété", sa valeur) ?

Merci d'avance.
A voir également:

2 réponses

Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
Bon ba persone n'a l'air très inspiré (-_-;)
1
Skan
 
Un rapide passage:

<<
final int currentPriority = Thread.currentThread().getPriority();
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// bla bla ton code principal
Thread.currentThread().setPriority(currentPriority);
>>

Ensuite sur Windows il me semble que tu peux aller dans les propréités d'un exe pour lui dire que ce n'est pas un processus prioritaire. En tout cas de mon temps c'était possible avec un ctrl+alt+supp, dnas la liste des processus en cours d'exécution.
Sur Linux, avec un "nice"...
0