I am reading about lambdas from the book Java 8 Lambdas by Richard Warburton. He started out discussion with concurrency in modern CPUs and eventually related lambdas with it. I don't know what I missed but I surely don't get the concept. Consider the following class
class A {
private int state;
A(){
state = 0;
}
A(int state){
this.state = state;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
@Override
public String toString() {
return Integer.toString(state);
}
} // end A
public class Main {
public static void main(String[] args) {
List<A> ls = new ArrayList<>();
ls.add(new A(2));
ls.add(new A(3));
ls.forEach( a -> a.setState(a.getState() + 1) );
System.out.println(ls); // [3, 4]
} // end main
} // end class Main
How this construct ls.forEach( a -> a.setState(a.getState() + 1) );
is more suitable for concurrent programming than
ls.forEach(new Consumer<A>() {
@Override
public void accept(A t) {
t.setState(t.getState() + 1);
}
});