J'ai une méthode d'interface booleenne droite () code>, si ce n'est pas "répondant" dans une seconde, il devrait renvoyer false. p>
4 Réponses :
pas possible. C'est un comportement spécifique à la mise en œuvre. P>
Depuis que vous avez commenté d'autres réponses qui tentent de proposer une solution, j'aimerais simplement souligner que, tout en correct, cette réponse n'est pas tout aussi utile. Vous ne pouvez pas définir tout comportement réel i> dans l'interface code>. Vous ne pouvez même pas garantir que ce sera jamais i> terminer. Même si elle se termine, vous ne pouvez pas vous garantir que cela vous donnera ce que vous voulez. Naturellement, vous ne pouvez pas assurer le comportement que l'OP a demandé. Peut-être avec un vérificateur statique basé sur des spécifications plus riche, vous pouvez essayer de faire en sorte qu'une implémentation suit un certain comportement, mais cela ne fait pas partie de Java standard.
Eh bien, vous ne pouvez pas mettre cette exigence dans l'interface elle-même, mais si vous contrôlez le côté appel possible, il est possible: p>
Oui, c'est possible avec ex. Dans ce cas, vous voulez un Disponible des implémentations en béton sont java.util.concurrent.future V code>), combiné à la méthode Obtenez (Timeout long, unité TimeUnit) code> . La méthode peut lancer timeoutException code>, entre autres exceptions, mais renvoie sinon le résultat calculé sur l'exécution normale. P>
futur obtenez (1, timeunit.seconds) code> dans un TRY-CATCH code> bloc , manutention timeoutException code> par votre spécification. p>
FutueTask et swingworker . Si cela se trouve dans le contexte de l'application Swing, vous voudrez utiliser ce dernier. P>
Voir aussi h3>
En réalité, ce n'est pas une réponse à la question. Il a demandé si l'interface elle-même peut fournir ce comportement qui n'est pas possible. Mais votre suggestion est une solution possible de.
Bien que ce ne soit peut-être pas une réponse à ma question, cela aide beaucoup, tylar ty de la réponse honnête ^^
bien sûr, il n'est pas possible d'ajouter ceci comme une vérification statique (à l'heure de la compilée, quelque chose que le compilateur peut vérifier pour y garantir), car combien de temps il faut pour exécuter une opération fortement dépend de l'environnement d'exécution que le programme est important. Courir dans.
Vous pouvez utiliser les classes dans java.util.concurrent code> pour exécuter une opération et attendre qu'il soit terminé dans un certain délai d'attente. Un exemple simple (non soigneusement testé, mais démontre l'idée): p>
Pas une vraie réponse à la question puisqu'il a demandé si l'interace elle-même peut fournir ce comportement. Mais est une solution possible pour le problème cependant.
@Sylar dans la première phrase que j'ai répondu à la question: la réponse est non.