I am learning java 8 with anonymous classes, i cant find start method, am i doing something wrong here?
class Tester { void doWork() { Runnable r = new Runnable() { @Override public void run() { } }; r.run(); r.start(); // showing ERR The method start() is undefined for the type Runnable } }
this works fine,
// Here we can extends any other class class Test extends Geeks implements Runnable { public void run() { System.out.println("Run method executed by child Thread"); } public static void main(String[] args) { Test t = new Test(); t.m1(); Thread t1 = new Thread(t); t1.start(); System.out.println("Main method executed by main thread"); } }
Advertisement
Answer
That’s because you need to start Threads – but you only need to run Runnables.
A thread makes it run in parallel (kind of) to the currently executing thread. A runnable just runs in the current thread. You can pre-populate a Thread with a runnable when you create it and then run it – the start()
method in the Thread will call run()
.
You can simply go Test t = new Test(); t.run();
and it will execute in the current Thread.