Salut,
Pour créer un Executor facilement, j'utilise :
Executors.newSingleThreadPoolExecutor();
par exemple.
Le problème, c'est que les threads sont non-démons.
N'y-a-t-il pas quelque part un truc pour créer des thread démons par défaut, déjà implémenté dans l'API ?
Car pour l'instant je me suis fait une classe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| /**
* Complément de la classe {@code java.util.concurrent.Executors}, permettant de créer un pool de threads démons.
*
* @author rom
*/
public final class DaemonExecutors {
/** ThreadFactory à utiliser pour créer des threads démons. */
private static final ThreadFactory threadFactory = new ThreadFactory() {
public Thread newThread(Runnable r) {
/* On demande au ThreadFactory par défaut de créer un Thread. */
Thread thread = Executors.defaultThreadFactory().newThread(r);
/* On configure ce thread en mode démon. */
thread.setDaemon(true);
/* On le retourne. */
return thread;
}
};
/** Interdiction d'instancier. */
private DaemonExecutors() {}
/**
* Retourne un {@code ThreadFactory} de threads démons.
*
* @return {@code ThreadFactory} de threads démons.
*/
public static ThreadFactory defaultDaemonThreadFactory() {
return threadFactory;
}
/**
* Retourne un exécuteurde threads démons.
*
* @return Exécuteur de threads démons.
*/
public static ExecutorService newSingleDaemonThreadExecutor() {
return Executors.newSingleThreadExecutor(defaultDaemonThreadFactory());
}
/**
* Retourne un exécuteur planifié de threads démons.
*
* @return Exécuteur planifié de threads démons.
*/
public static ScheduledExecutorService newSingleDaemonThreadScheduledExecutor() {
return Executors.newSingleThreadScheduledExecutor(defaultDaemonThreadFactory());
}
} |
qui permet de créer des threads démons facilement, mais je trouve cela étonnant que ça ne soit pas dans l'API standard...
Pourriez-vous confirmer ou infirmer svp?
Partager