Vous devrez utiliser Threads pour cela, car vous divisez le flux du programme en deux ; le chemin de retour et le chemin de traitement sont séparés et fonctionnent l'un à côté de l'autre.
Si vous avez besoin que l'accusé de réception du début de la méthode soit envoyé par le retour de la méthode, alors pourquoi vos méthodes de fourniture de services ne peuvent-elles pas être aussi simples que ceci ?
public Acknowledgement someService() {
new Thread(new SomeServiceRunnable()).start();
return new Acknowledgement();
}
Le service sera lancé, puis la méthode reviendra (notifiant ainsi que le processus a démarré) tandis que le traitement se poursuivra jusqu'à la fin du fil...
Est-ce que je rate quelque chose ici sur ce que vous devez atteindre ?
J'espère que cela vous aidera.
EDIT :
Il semble que certaines réponses aient été conçues pour répondre à des problèmes qui, selon moi, n'étaient pas présentés comme faisant partie de la question. Voici quelques hypothèses que j'ai formulées lors de l'élaboration de ma réponse, afin que toute personne lisant cette réponse puisse avoir une meilleure idée des cas où elle pourrait ne pas s'appliquer à sa situation particulière :
Ceci est pour une situation où vous voulez seulement reconnaître qu'un service a conceptuellement parlant commencé son exécution. L'accusé de réception ne peut donner aucune information sur le succès d'une partie de cette exécution ou de son initialisation, mais seulement sur le fait qu'elle a conceptuellement commencé, c'est-à-dire que la Runnable associée run() sera appelée à un moment donné.
Bien sûr, si vous voulez que l'exécution commence et que l'appelant revienne, alors la signification de l'accusé de réception sera nécessairement limitée par la quantité exacte de la tâche qui a attendu d'être exécutée avant de revenir, ici aucune attente n'est faite et l'accusé de réception est retourné immédiatement, et donc aucune information supplémentaire ne peut être donnée.