As per Oracle documentation:
Functional interfaces often represent abstract concepts like
functions, actions, or predicates. In documenting functional
interfaces, or referring to variables typed as functional interfaces,
it is common to refer directly to those abstract concepts, for example
using "this function" instead of "the function represented by this
object". When an API method is said to accept or return a functional
interface in this manner, such as "applies the provided function
to...", this is understood to mean a non-null reference to an object
implementing the appropriate functional interface, unless potential
nullity is explicitly specified. Functional interface are the
interfaces that have only one functionality to implement. So
basically, if you will see at runnable interface as well, it is again
kind of function interface with only one functionality "run".
So, you can consider Functional Interface to be kind of category of interfaces with exactly one non default function and various interface like Runnable Interface and Comparable interface come under this category.
Moreover, in JAVA 8 you can also directly implement functional interface anonymously using lambda expressions:
Runnable r1 = () -> System.out.println("Hello World!");
Using lambda expressions, makes the code quite neat and readable and also reduces the number of line. Also, lambda expressions can help in sequential and parallel execution using Streams.
While using functional interface you can also ensure to have one non default function only so that it does not break in future modifications by implementing @FunctionalInterface.
For more details about Functional Interface you can visit here