public static class TestThread extends Thread { static { System.out.println("it's a static block inside TestThread"); } @Override public void run() { System.out.println("it's a run method"); } } public static void main(String[] args) { TestThread thread = new TestThread(); thread.start(); } вопрос в том, что мы же просто вызвали старт, почему вызвался ран и статический? да даже если без статики написать в { System.out.println("запустись"); } то он тоже запуститься, вопрос собственно почему, чисто для понимания, видимо я что-то упустил в лекциях