FooBar.java:5: non-static variable this cannot be referenced from a static context private final static Runnable demothread1=new DemoThread(1); ^ 1 error
Wenn man DemoThread statisch deklariert klappt es hervorragend.
Wie gesagt, da es sich um eine nested class handelt, kannst du nicht ohne "von außen" auf sie zugreifen.
Du kannst das aber etwas umschreiben, in dem du das mit einer Get-Methode kapselst. So in etwa:
public DemoThread getDemoThread(int nr) { return new DemoThread(nr); }
So verzichtest du auf deine statischen Methoden.
Können wir uns darauf einigen?
import static java.lang.System.out; public final class FooBar { final class DemoThread implements Runnable { private final String threadname; private DemoThread(final int nr) { threadname = "Thread #" + nr + ": "; } public void run() { for(int i = 0; i < 101; i++) out.println(threadname + i); } } public DemoThread getDemoThread(int nr) { return new DemoThread(nr); } public static void main(final String[] args) { FooBar fb = new FooBar(); Thread thread1 = new Thread(fb.getDemoThread(1)); Thread thread2 = new Thread(fb.getDemoThread(2)); thread1.start(); thread2.start(); } }