Diferencia entre android runOnUiThread y código simple en java

Soy un principiante en el desarrollo de aplicaciones de Android. Estoy trabajando con hilos en Android. He leído sobre unrunOnUiThread qué código de ejecución en la interfaz de usuario principal (si no estoy equivocado? supongo).

Mi pregunta es cuál es la diferencia entre el código normal en la interfaz de usuario principal y el código internorunOnIUThread.

Ejemplo 1

class A
{
getDataFromServer(foo);//Code on mainUI
}

Ejemplo: 2

getActivity.runOnUiThread(new Runnable(){
@Override
public void run(){
getDataFromServer(foo);
}
});

Cuál es la diferencia en ambos ejemplos. Por favor, ayúdenme. Su respuesta será un nuevo aprendizaje para mí.

Respuestas a la pregunta(3)

Su respuesta a la pregunta