2017-04-26 1 views
2

Comment puis-je utiliser l'API Java concurrency pour obtenir une référence à la tâche planifiée pour l'exécution?Obtenir une référence à la tâche planifiée

Je peux faire quelque chose comme cela, et conserver la référence à myRunnable:

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); 
SimpleRunnable myRunnable = new SimpleRunnable(); 
exec.scheduleAtFixedRate(myRunnable, 0, 2, TimeUnit.SECONDS); 

Mais est-il un moyen d'utiliser le service exécuteur testamentaire ou ScheduledFuture pour obtenir la référence?

This question montre une collection d'objets Future et explique qu'ils gardent une référence à la tâche, mais je ne vois aucune méthode API publique l'exposant.

Répondre

0

La future référence représente le résultat du calcul de la tâche asynchrone tandis que la tâche elle-même est essentiellement la référence exécutable que vous transmettez à la méthode scheduleAtFixedRate ('myRunnable' dans l'exemple ci-dessous). Je ne pense pas que vous ayez un moyen de récupérer le Runnable de l'exécuteur lui-même. S'il vous plaît élaborer ce que vous êtes prêt à réaliser et je vais essayer de vous aider.

+0

Oui, je pourrais conserver la référence pour l'objet ScheduledFuture, mais je ne vois toujours pas comment obtenir une référence à la tâche. – sjgp

+0

Je ne pense pas que vous avez un moyen de récupérer le Runnable de l'exécuteur lui-même. S'il vous plaît, développez ce que vous voulez accomplir et je vais essayer de vous aider. –

+0

J'explore des options de conception pour une exigence qu'une tâche soit exécutée à intervalles réguliers pour faire un peu de travail, et rassembler des informations comme elle le fait. Un second processus indépendant doit avoir accès à cette information. L'accès n'a pas besoin d'être via Executor ou Future API, et je peux concevoir une autre solution puisque référencer la tâche de cette façon ne semble pas être une option. Merci pour vos pensées! – sjgp