When we should use Supplier in Java 8?
<p>What difference between this code?</p>

<pre><code>Supplier&lt;LocalDate&gt; s1 = LocalDate::now;
LocalDate s2 = LocalDate.now();

System.out.println(s1.get()); //2016-10-25
System.out.println(s2); //2016-10-25
</code></pre>

<p>I start learning functional interfaces in Java 8 and don't understand the benefit of the Supplier. When and how, exactly, should use them. Does the Supplier improve performance or maybe the benefits on abstraction level?</p>

<p>Thanks for your answers! And it isn't duplicate question because I used search and didn't find what I need.</p>

<p><strong>UPDATE 1:</strong>
You mean this?</p>

<pre><code>    Supplier&lt;Long&gt; s1 = System::currentTimeMillis;
    Long s2 = System.currentTimeMillis();

    System.out.println(s1.get()); //1477411877817
    System.out.println(s2); //1477411877817
    try {
        Thread.sleep(3000l);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println(s1.get()); //1477411880817 - different
    System.out.println(s2); //1477411877817
</code></pre>