Schwierigkeiten beim Verständnis eines Java 8 Lambda

8
%Vor%

Ich verstehe die Idee hinter einem Executor, aber der Parameter r verwirrt mich. Ich benutzte:

%Vor%

um tiefer zu graben und das Ergebnis ist:

%Vor%

r wird als Parameter an den Objektkonstruktor Thread übergeben.

  1. Wie lautet der einfache Buchstabe r , der angibt, dass das übergebene Objekt ein ThreadPoolExecutor ?
  2. ist
  3. Wie ist% ThreadPoolExecutor als Parameter passierbar, wenn Runnable nicht wie vom by Thread's -Konstruktor erforderlich implementiert wird?

Wenn jemand mir auch eine Nicht-Lambda-Version des Codes liefern könnte, wäre das für mein Verständnis von großem Nutzen.

    
user465001 06.11.2014, 03:09
quelle

1 Antwort

15

newSingleThreadExecutor verwendet eine ThreadFactory als Argument. ThreadFactory definiert eine einzelne Methode newThread , die benötigt wird Ein Runnable als Argument und gibt einen Thread zurück.

Das Lambda könnte für Sie mehr Sinn ergeben, wenn wir explizit den Typ von r angeben:

%Vor%

Nun ist es offensichtlich, dass dies eine Definition für den Körper von newThread ist.

Mit Ausnahme der Tatsache, dass das Lambda als Argument an eine Methode übergeben wird, die eine ThreadFactory akzeptiert, kann der Compiler daraus schließen, dass der Typ von r Runnable sein muss. Daher kann es weggelassen werden.

Ohne den Lambda übersetzt dieser Code die folgende anonyme Klassendefinition und Instanziierung:

%Vor%
  

Wie lautet der einfache Buchstabe r , der angibt, dass das übergebene Objekt ein ThreadPoolExecutor ?

ist?

Der Typ von r ist Runnable, weil der Zieltyp des Lambda-Ausdrucks seine einzelne Methode auf diese Weise definiert.

Das Objekt, das Sie sehen, ist tatsächlich ein ThreadPoolExecutor$Worker , was eine private innere Klasse von ThreadPoolExecutor ist, die Runnable implementiert.

  

Wie ist% ThreadPoolExecutor als Parameter passierbar, wenn% ce_de% nicht wie vom Konstruktor by Runnable benötigt implementiert wird?

Siehe oben ( Thread ist ein Runnable).

    
Radiodef 06.11.2014, 03:20
quelle

Tags und Links