1. Beschreiben und Erzählung
Beim Programmieren unter Multithreading. Sie können auf einen Bedarf stoßen, dh wenn die Threads, die ich öffne, möchte ich die in jedem Thread zurückgegebenen Daten gleichzeitig erhalten und dann eine einheitliche Verarbeitung durchführen. Nach dieser Anforderung ist die Kombination aus zukünftiger und aufrufbarem Nutzen in großem Umfang verwendet.
Einige Leute mögen auch sagen, dass ich Synchronisation verwenden kann, um diese Anforderung zu erfüllen, aber in gewöhnlichen Fällen ist dies in der Tat möglich. Aber in einem Sonderfall funktioniert es nicht:
Stellen Sie sich vor, Sie haben mehrere Threads ermöglicht, einige Daten synchron zu berechnen, aber jeder weiß, dass Threads um Ressourcen konkurrieren werden. Wenn Sie mehrere Threads ermöglichen, um die Berechnung von Daten zu synchronisieren. Tatsächlich kann die Berechnungsreihenfolge zwischen Threads nicht null sein, es ist natürlich nicht unmöglich, damit umzugehen, es sei denn, Sie machen keinen großen Fehler. In einem solchen Fall. Die Kombination aus Zukunft und Callable ist die beste Wahl.
2. Beispielbeispiele
Die Beispiele dieser beiden Kategorien sind tatsächlich sehr einfach, hauptsächlich abhängig davon, ob Sie ihre Verwendung in der tatsächlichen Verwendung feststellen können. Auf Code:
Pakettest; importieren java.util.concurrent.callable; import java.util.concurrent public class featureCallabletest {private static ExecutorService Service = Executors.NewFixedThreadpool (100); private statische Int Count = 1; public static void main (String [] args) löst InterruptedException, ExecutionException {int sum = 0; für (int i = 0; i <100; i ++) {Future <Integer> Future = Service.Submit (neuer Callable <GanzeGer> () {@Override public Integer call () löst Ausnahme aus {System.out.println (Thread.Current thread (). getName ()); int f = future.get (); sum += f; System.out.println ("Zukunft ist" + f); } System.out.println ("sum is" + sum); service.Shutdownnow (); }}