March 2017
Beginner to intermediate
114 pages
2h 16m
English
The Example 3 class uses a Java lambda with our waitFor method. The lambda doesn't do anything other than return true. It's equivalent to example 1.
public class Example3 {
// simple lambda
void example() throws InterruptedException {
waitFor(() -> true);
}
}The bytecode is super simple this time. It uses the invokedynamic opcode to create the lambda at line 3 which is then passed to the invokestatic opcode on the next line.
void example() throws java.lang.InterruptedException;
Code:
0: invokedynamic #2, 0 // InvokeDynamic #0:isSatisfied:
()LCondition;
5: invokestatic #3 // Method WaitFor.waitFor:(LCondition;)V
8: returnThe descriptor for the invokedynamic call is targeting the isSatisfied method on the Condition interface (line 3.). ...
Read now
Unlock full access