Difference between revisions of "Lambda Demos"
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
=Code To Investigate= | =Code To Investigate= | ||
− | == | + | ==x10.finish== |
− | <nowiki> | + | <nowiki>X10 x10 = new ForkJoinX10(); |
− | + | System.out.println("start"); | |
− | + | x10.void_finish(() -> { | |
− | + | void_fork(() -> { | |
− | + | sleepRandom(1_000); | |
− | + | System.out.println("-apples"); | |
− | + | }); | |
− | + | void_fork(() -> { | |
− | + | sleepRandom(1_000); | |
− | + | System.out.println("--oranges"); | |
− | + | }); | |
− | + | void_fork(() -> { | |
− | + | sleepRandom(1_000); | |
− | + | System.out.println("---bananas"); | |
− | + | }); | |
− | + | void_fork(() -> { | |
− | + | sleepRandom(1_000); | |
− | + | System.out.println("----mangoes"); | |
− | + | }); | |
− | + | }); | |
− | + | System.out.println("stop"); | |
− | + | </nowiki> | |
{{CodeToInvestigate|LambdasAsyncAndFinishExample|main|lambda.demo.asyncfinish}} | {{CodeToInvestigate|LambdasAsyncAndFinishExample|main|lambda.demo.asyncfinish}} |
Revision as of 05:24, 12 February 2022
Contents
Motivation
JDK 8 added lambdas to alleviate the bulkiness of anonymous inner classes. We use lambdas heavily in 231.
Background
Code To Investigate
x10.finish
X10 x10 = new ForkJoinX10(); System.out.println("start"); x10.void_finish(() -> { void_fork(() -> { sleepRandom(1_000); System.out.println("-apples"); }); void_fork(() -> { sleepRandom(1_000); System.out.println("--oranges"); }); void_fork(() -> { sleepRandom(1_000); System.out.println("---bananas"); }); void_fork(() -> { sleepRandom(1_000); System.out.println("----mangoes"); }); }); System.out.println("stop");
class: | LambdasAsyncAndFinishExample.java | DEMO: |
methods: | main | |
package: | lambda.demo.asyncfinish | |
source folder: | src//java |
class: | AnonymousInnerClassesAsyncAndFinishExample.java | DEMO: |
methods: | main | |
package: | lambda.demo.asyncfinish | |
source folder: | src//java |
class: | NamedClassesAsyncAndFinishExample.java | DEMO: |
methods: | main | |
package: | lambda.demo.asyncfinish | |
source folder: | src//java |
compute
String text = "abracadabra"; // NOTE: we use a TreeMap<K,V> since it is sorted producing consistent output Map<Character, Integer> mapCharacterToCount = new TreeMap<>(); for( char ch : text.toCharArray() ) { // https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#compute-K-java.util.function.BiFunction- mapCharacterToCount.compute(ch, (Character character, Integer count)-> { if( count != null ) { //we have associated character before return count+1; } else { //first encounter with character return 1; } }); } for( Entry<Character, Integer> entry : mapCharacterToCount.entrySet() ) { System.out.println(entry); }
class: | LambdasMapComputeExample.java | DEMO: |
methods: | demo | |
package: | lambda.demo.compute | |
source folder: | src//java |
class: | AnonymousInnerClassesMapComputeExample.java | DEMO: |
methods: | demo | |
package: | lambda.demo.compute | |
source folder: | src//java |
class: | NamedClassesMapComputeExample.java | DEMO: |
methods: | demo | |
package: | lambda.demo.compute | |
source folder: | src//java |
user interface
buttonI.setOnAction((ActionEvent e) -> { System.out.println("entering lambda"); System.out.println(" " + accessible_within_lambda_i + " (note: runtime stack with local variable i long since popped)"); System.out.println(" leaving lambda"); System.out.println(); });
class: | FxLambdaDemoApp.java | VIZ |
package: | lambda.demo.viz | |
source folder: | student/src//java |