we know that Java is an OOP language, since Java 8, we can use Lambda. But I have some questions and hope anyone can give me some advice.
Java is an OOP language, but throughout the last years, Java, like many other important languages tries to become more FP (think C++ for example, and all the FP support that got added to it lately).
One core element of Functional Programming: higher order functions. "Code that does something" becomes something you can define on its own, and pass around.
So, yes, in a strict OOP sense lambdas, and closures look awkward. But Java is simply following a specific trend here.
And, personal opinion now: Java does that to stay relevant. The OOP concept was "invented" to solve a very specific set of problems, and many other problems can be expressed/solved using FP paradigms in much better/elegant ways.