Ваш статический метод обращается к статической переменной класса, так что все должно быть в порядке. Вы можете думать об этом как о глобальном коде и глобальной переменной, так как это ЕСТЬ в пространстве имен класса.
Если вы пытались получить доступ к нестатической переменной-члену:
private int foo = 0;
из статического метода компилятор будет и должен жаловаться.
started is false - initial state.
MyClass.doSomething() - statered is now true
MyClass.doSomething() - started is STILL true
MyClass foo = new MyClass();
foo.started -> it's STILL true, because it's static
foo.doSomething() - not sure you can do this in Java, but if you can, it's be STILL TRUE!
Теперь в вышеприведенном коде есть проблемы с безопасностью потоков, но, кроме этого, похоже, что он работает как задумано.