Since Callable is a functional interface, Java 8 onward it can also be implemented as a lambda expression. This post shows how you can implement Callable interface as a lambda expression in Java.
Suppose you want to have a callable where string is passed and it returns the length of the string.
In this Java code a thread pool of 2 threads is created and then submit method is called with callable
object as parameter.
Java Code
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableLambda {
public static void main(String args[]){
ExecutorService es = Executors.newFixedThreadPool(2);
getLength(es, "executor");
getLength(es, "executor service");
getLength(es, "Scheduled executor service");
getLength(es, "executors");
getLength(es, "fork join");
getLength(es, "callable");
}
public static void getLength(ExecutorService es, final String str){
// callable implemented as lambda expression
Callable<String> callableObj = () -> {
StringBuffer sb = new StringBuffer();
return (sb.append("Length of string ").append(str).append(" is ").
append(str.length())).toString();
};
// submit method
Future<String> f = es.submit(callableObj);
try {
System.out.println("" + f.get());
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Output
Length of string executor is 8 Length of string executor service is 16 Length of string Scheduled executor service is 26 Length of string executors is 9 Length of string fork join is 9 Length of string callable is 8
Also, if you noticed the try-catch block in the code, multi catch statement from Java 7 is used here.
That's all for this topic Java Lambda Expression Callable Example. If you have any doubt or any suggestions to make please drop a comment. Thanks!
>>>Return to Java Programs Page
Related Topics
You may also like-
No comments:
Post a Comment