Heim  >  Artikel  >  Java  >  Java-Codebeispiel zur Implementierung eines asynchronen Aufrufs

Java-Codebeispiel zur Implementierung eines asynchronen Aufrufs

不言
不言nach vorne
2019-03-07 17:15:392635Durchsuche

Der Inhalt dieses Artikels befasst sich mit Codebeispielen für die Implementierung asynchroner Aufrufe in Java. Ich hoffe, dass er für Freunde hilfreich ist.

Zuallererst besteht das Problem, auf das ich gestoßen bin, darin, dass der Cache aktualisiert werden muss, wenn die Schnittstelle aufgerufen wird, und die Aktualisierung des Caches ein Prozess ist, der schnell ist oder nicht, daher habe ich vor, einen asynchronen Aufruf durchzuführen Ich muss nicht darauf achten, wann der Cache aktualisiert wird.

Kein Unsinn mehr, reden wir über den Code

public class MyExecutor {
    private ExecutorService executor = Executors.newCachedThreadPool() ;
    public void fun() throws Exception {
        executor.submit(new Runnable(){
            @override
                public void run() {
                    try {
                        //要执行的业务代码,我们这里没有写方法,可以让线程休息几秒进行测试
                        Thread.sleep(10000);
                        System.out.print("睡够啦~");
                    }catch(Exception e) {
                        throw new RuntimeException("报错啦!!");
                    }
                }
        });
    }
}
rrree

Okay, das ist der Ende des Codes (ps: Bitte verzeihen Sie mir, wenn beim Tippen von Hand Fehler auftreten)

Führen Sie die Hauptmethode aus

Sie wird zuerst gedruckt (Sie schlafen zuerst ein, ich wird zuerst nach Hause gehen~)

Dann (ausreichend schlafen~)

Das heißt, in Wenn die Methode, die eine asynchrone Ausführung erfordert, nicht abgeschlossen wurde, hat das Hauptprogramm das Ergebnis bereits zurückgegeben Es besteht keine Notwendigkeit, weiter zu warten. Dadurch wird sichergestellt, dass das Programm zuerst das Ergebnis zurückgibt und dann weiterhin mühsame Aufgaben ausführt, die kein Warten erfordern. Natürlich können Sie auch einige Methoden hinzufügen, um festzustellen, ob die asynchrone Methode ausgeführt wurde.

Sprechen wir über die Executors-Klasse

Diese Klasse wird zum Erstellen eines Thread-Pools verwendet

Es gibt mehrere Methoden

1 newFixedThreadPool() erstellt einen feste Größe Die Größe des Thread-Pools bleibt unverändert, sobald sie den Maximalwert erreicht. Wenn ein Thread aufgrund einer Ausführungsausnahme endet, fügt der Thread-Pool einen neuen Thread hinzu

2. newCachedThreadPool() erstellt einen Cache Thread-Thread-Pool. Wenn die Größe des Thread-Pools die zur Verarbeitung von Aufgaben erforderlichen Threads überschreitet, werden einige inaktive Threads (die 60 Sekunden lang keine Aufgaben ausführen) recycelt. Wenn die Anzahl der Aufgaben zunimmt, kann dieser Thread-Pool auf intelligente Weise neue Threads hinzufügen. Prozessaufgaben. Dieser Thread-Pool begrenzt die Größe des Thread-Pools nicht vollständig von der maximalen Thread-Größe, die das System (JVM) erstellen kann

3. newSingleThreadExecutor() erstellt einen Single-Thread Thread-Pool. In diesem Thread-Pool arbeiten nur Threads, was einem einzelnen Thread entspricht, der alle Aufgaben seriell ausführt. Wenn der einzige Thread abnormal endet, wird er durch einen neuen Thread ersetzt. Dieser Thread-Pool stellt sicher, dass alle Aufgaben in der Reihenfolge ausgeführt werden, in der sie übermittelt werden

4. newScheduledThreadPool() erstellt einen Thread-Pool mit unbegrenzter Größe. Dieser Thread-Pool unterstützt die zeitliche Abstimmung und periodische Ausführung von Aufgaben

5. newSingleThreadScheduledExecutor() erstellt einen Single-Threaded-Thread-Pool. Dieser Thread-Pool unterstützt das Timing und die regelmäßige Ausführung von Aufgaben

Das obige ist der detaillierte Inhalt vonJava-Codebeispiel zur Implementierung eines asynchronen Aufrufs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen